假设我有字符串1:2:3:4:5,我想要得到它的最后一个字段(在本例中是5)。我如何使用Bash做到这一点?我试过cut,但我不知道如何用-f指定最后一个字段。
当前回答
for x in `echo $str | tr ";" "\n"`; do echo $x; done
其他回答
for x in `echo $str | tr ";" "\n"`; do echo $x; done
如果你的最后一个字段是一个字符,你可以这样做:
a="1:2:3:4:5"
echo ${a: -1}
echo ${a:(-1)}
检查bash中的字符串操作。
另一种方法是将前后剪反:
$ echo ab:cd:ef | rev | cut -d: -f1 | rev
ef
这使得获取倒数第二个字段或从末尾开始编号的任何字段范围非常容易。
echo "a:b:c:d:e"|xargs -d : -n1|tail -1
首先使用xargs使用“:”分割它,-n1意味着每一行只有一个部分。然后,弹簧最后一部分。
使用sed:
$ echo '1:2:3:4:5' | sed 's/.*://' # => 5
$ echo '' | sed 's/.*://' # => (empty)
$ echo ':' | sed 's/.*://' # => (empty)
$ echo ':b' | sed 's/.*://' # => b
$ echo '::c' | sed 's/.*://' # => c
$ echo 'a' | sed 's/.*://' # => a
$ echo 'a:' | sed 's/.*://' # => (empty)
$ echo 'a:b' | sed 's/.*://' # => b
$ echo 'a::c' | sed 's/.*://' # => c