假设我有字符串1:2:3:4:5,我想要得到它的最后一个字段(在本例中是5)。我如何使用Bash做到这一点?我试过cut,但我不知道如何用-f指定最后一个字段。
当前回答
对不起,我不能评论,但在这里; 来自@mateusz-piotrowski @user3133260的答案,
回声“e b: c: d::::::“| tr ':' ' ' | xargs | tr ' ' ' \ n ' |尾1
首先,tr ':' ' ' ->将':'替换为空格
然后,用xargs修整
之后,tr ' ' '\n' ->将保留的空格替换为换行符
最后,tail -1 ->得到最后一个字符串
其他回答
如果你想使用cut,你可以尝试这样做:
echo "1:2:3:4:5" | cut -d ":" -f5
你也可以像这样使用grep try:
echo " 1:2:3:4:5" | grep -o '[^:]*$'
sed中的正则表达式匹配是贪婪的(总是到最后一个出现),你可以在这里使用它:
$ foo=1:2:3:4:5
$ echo ${foo} | sed "s/.*://"
5
使用cut很难得到最后一个字段,但是这里有一些在awk和perl中的解决方案
echo 1:2:3:4:5 | awk -F: '{print $NF}'
echo 1:2:3:4:5 | perl -F: -wane 'print $F[-1]'
如果你的最后一个字段是一个字符,你可以这样做:
a="1:2:3:4:5"
echo ${a: -1}
echo ${a:(-1)}
检查bash中的字符串操作。
使用read内置的解决方案:
IFS=':' read -a fields <<< "1:2:3:4:5"
echo "${fields[4]}"
或者,让它更通用:
echo "${fields[-1]}" # prints the last item