在连字符后获取字符串的最后一部分


10

是否有一个简单的命令行来提取由连字符分隔的字符串的最后一部分?例如,我想提取123foo-bar-123

Answers:


23

您可以使用Bash的参数扩展

string="foo-bar-123" && printf "%s\n" "${string##*-}"
123

如果要使用其他进程,请使用Awk:

echo "foo-bar-123" | awk -F- '{print $NF}'

或者,如果您喜欢Sed:

echo "foo-bar-123" | sed 's/.*-//'

较轻的外部过程中,由于格伦杰克曼建议cut

cut -d- -f3 <<< "$string"

shell参数扩展是最好的答案。一个轻巧的外部工具是cutcut -d- -f3 <<< "$string"
格伦·杰克曼(Glenn jackman)2015年

1
@glennjackman-re : cut; 的确如此,但
前提

2
@don_crissti,的确如此。一个人可以rev <<< "$string" | cut -d- -f1 | rev,但随后我们偏离了param.expansion的简单性。
格琳·杰克曼(Glenn jackman)2015年


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.