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
使用命令行有很多选择:
$ 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)
sed 默认情况下是贪婪的,所以只需删除所有内容,直到最后一个空格:
sed 's/.* //'
Run Code Online (Sandbox Code Playgroud)
或使用这个awk习语:
awk '$0=$NF'
Run Code Online (Sandbox Code Playgroud)