我有一个以空格分隔的字符串,它由一个命令输出,我喜欢通过管道传送到cut
,-fd ' '
用于分割空格。我知道我可以-f <n>
用来显示字段编号<n>
,但是如果我不知道字符串的长度,我可以让它显示最后一个字段吗?
还是我需要使用更灵活的文本编辑工具,例如sed
or awk
?
我有一个以空格分隔的字符串,它由一个命令输出,我喜欢通过管道传送到cut
,-fd ' '
用于分割空格。我知道我可以-f <n>
用来显示字段编号<n>
,但是如果我不知道字符串的长度,我可以让它显示最后一个字段吗?
还是我需要使用更灵活的文本编辑工具,例如sed
or awk
?
不
cut
,不能那样做。您可以使用两个rev
命令,例如但它通常更容易使用
awk
:您可以仅使用 shell 执行此操作,无需外部工具,使用参数扩展:
var##*
将丢弃参数 (variable) 中从启动到最后一个空格的所有内容var
。如果分隔符可以是任何空格,例如空格或制表符,请使用字符类
[:blank:]
:例子:
我个人喜欢 Florian Disch 的回答。但也有这种方式。
解释:
wc -w
给出单词的数量。并cut
删掉最后一句话编辑:
我想出了另一种方法:
这是一个使用
grep
这个怎么运作:
-o
仅打印匹配行的匹配(非空)部分。[^ ]*$
从结尾匹配任何内容,直到找到空格。来自glenn jackman的另一个使用 perl的班轮