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


当前回答

选择1

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

其他回答

使用perl的替代方法是:

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

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

没有awk ? 但是用awk很简单:

echo 'maps.google.com' | awk -F. '{print $NF}'

AWK是一个更强大的工具,可以放在你的口袋里。 -F if用于字段分隔符 NF是字段的数量(也表示最后一个字段的索引)

我意识到,如果我们只是确保后面的分隔符存在,它就可以工作。在我的例子中,我有逗号和空格分隔符。我在结尾加了一个空格;

$ ans="a, b"
$ ans+=" "; echo ${ans} | tr ',' ' ' | tr -s ' ' | cut -d' ' -f2
b

你可以尝试这样做:

echo 'maps.google.com' | rev | cut -d'.' -f 1 | rev

解释

Rev将maps.google.com颠倒为moc.elgoog.spam Cut使用点(即“。”)作为分隔符,并选择第一个字段,即moc 最后,我们再次反向得到com

选择1

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