从 CLI 中删除文本文件中最后一个空格之前的所有文本

mwh*_*e14 4 command-line regex sed

我想从 CLI 中删除文本文件中最后一个空格之前的所有内容

示例文本:

2015-03-02 21:34:15      20480 dump-2015-03-02-21-34.tar
Run Code Online (Sandbox Code Playgroud)

应该保留的字符串是 dump-2015-03-02-21-34.tar

Syl*_*eau 7

使用命令行有很多选择:

$ echo "2015-03-02 21:34:15      20480 dump-2015-03-02-21-34.tar" | cut -c32-
dump-2015-03-02-21-34.tar

$ echo "2015-03-02 21:34:15      20480 dump-2015-03-02-21-34.tar" | sed 's/.* //'
dump-2015-03-02-21-34.tar

$ echo "2015-03-02 21:34:15      20480 dump-2015-03-02-21-34.tar" | grep -oP "\S+$"
dump-2015-03-02-21-34.tar

$ echo "2015-03-02 21:34:15      20480 dump-2015-03-02-21-34.tar" | awk {'print $NF'}
dump-2015-03-02-21-34.tar

$ echo "2015-03-02 21:34:15      20480 dump-2015-03-02-21-34.tar" | perl -pe 's/.* //'
dump-2015-03-02-21-34.tar

$ echo "2015-03-02 21:34:15      20480 dump-2015-03-02-21-34.tar" | rev | cut -d ' ' -f 1 | rev
dump-2015-03-02-21-34.tar
Run Code Online (Sandbox Code Playgroud)


Tho*_*hor 5

sed 默认情况下是贪婪的,所以只需删除所有内容,直到最后一个空格:

sed 's/.* //'
Run Code Online (Sandbox Code Playgroud)

或使用这个awk习语:

awk '$0=$NF'
Run Code Online (Sandbox Code Playgroud)