Arr*_*cal 17 command-line cut-command
我有一个空格分隔的字符串,它是由一个命令输出的,我喜欢通过管道传输到cut
,-fd ' '
用于在空格上进行拆分。我知道我可以-f <n>
用来显示字段编号<n>
,但是如果我不知道字符串的长度,我可以让它显示最后一个字段吗?
或者我是否需要使用更灵活的文本编辑工具,例如sed
或awk
?
Flo*_*sch 18
不cut
不能那样做。您可以使用两个rev
命令,例如
echo 'foo bar baz' | rev | cut -d' ' -f1 | rev
Run Code Online (Sandbox Code Playgroud)
但它通常更容易使用awk
:
echo 'foo bar baz' | awk '{print $(NF)}'
Run Code Online (Sandbox Code Playgroud)
您可以仅使用 shell 执行此操作,不需要外部工具,使用参数扩展:
${var##* }
Run Code Online (Sandbox Code Playgroud)
var##*
将丢弃从 parameter (variable) 开始到最后一个空格的所有内容var
。
如果分隔符可以是任何空格,例如空格或制表符,请使用字符类[:blank:]
:
${var##*[[:blank:]]}
Run Code Online (Sandbox Code Playgroud)
例子:
$ var='foo bar spam egg'
$ echo "${var##* }"
egg
$ var=$'foo\tbar\tspam\tegg'
$ echo "$var"
foo bar spam egg
$ echo "${var##*[[:blank:]]}"
egg
Run Code Online (Sandbox Code Playgroud)