不使用sed或awk,只cut,当字段的数量未知或随每一行变化时,我如何得到最后一个字段?
当前回答
使用参数展开。这比包括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
选择1
choose支持负索引(语法类似于Python的切片)。
使用perl的替代方法是:
perl -pe 's/(.*) (.*)$/$2/' file
在哪里您可以改变\t为任何分隔符的文件是
有多种方法。你也可以用这个。
echo "Your string here"| tr ' ' '\n' | tail -n1
> here
显然,tr命令的空格输入应该替换为所需的分隔符。
没有awk ? 但是用awk很简单:
echo 'maps.google.com' | awk -F. '{print $NF}'
AWK是一个更强大的工具,可以放在你的口袋里。 -F if用于字段分隔符 NF是字段的数量(也表示最后一个字段的索引)