不使用sed或awk,只cut,当字段的数量未知或随每一行变化时,我如何得到最后一个字段?


当前回答

在处理表格数据时最好使用awk。你不需要听从命令。如果awk可以实现,为什么不使用它呢?我建议您不要浪费宝贵的时间,只需使用少量命令就可以完成工作。

例子:

# $NF refers to the last column in awk
ll | awk '{print $NF}'

其他回答

使用perl的替代方法是:

perl -pe 's/(.*) (.*)$/$2/' file

在哪里您可以改变\t为任何分隔符的文件是

有多种方法。你也可以用这个。

echo "Your string here"| tr ' ' '\n' | tail -n1
> here

显然,tr命令的空格输入应该替换为所需的分隔符。

选择1

choose支持负索引(语法类似于Python的切片)。

使用参数展开。这比包括cut(或grep)在内的任何外部命令都要有效得多。

data=foo,bar,baz,qux
last=${data##*,}

参见BashFAQ #100,了解bash中本地字符串操作的介绍。

下面实现一个朋友的建议

#!/bin/bash
rcut(){

  nu="$( echo $1 | cut -d"$DELIM" -f 2-  )"
  if [ "$nu" != "$1" ]
  then
    rcut "$nu"
  else
    echo "$nu"
  fi
}

$ export DELIM=.
$ rcut a.b.c.d
d