有没有办法让 cut 命令只读取最后一个字段?

Arr*_*cal 17 command-line cut-command

我有一个空格分隔的字符串,它是由一个命令输出的,我喜欢通过管道传输到cut-fd ' '用于在空格上进行拆分。我知道我可以-f <n>用来显示字段编号<n>,但是如果我不知道字符串的长度,我可以让它显示最后一个字段吗?

或者我是否需要使用更灵活的文本编辑工具,例如sedawk

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)


hee*_*ayl 9

您可以仅使用 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)