我想从 CLI 中删除文本文件中最后一个空格之前的所有内容
示例文本:
2015-03-02 21:34:15 20480 dump-2015-03-02-21-34.tar
应该保留的字符串是dump-2015-03-02-21-34.tar
答案1
使用命令行有很多选择:
$ 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
答案2
sed
默认情况下是贪婪的,因此只需删除直到最后一个空格的所有内容:
sed 's/.* //'
或者使用这个awk
习语:
awk '$0=$NF'
答案3
尝试grep
:
echo "2015-03-02 21:34:15 20480 dump-2015-03-02-21-34.tar" | grep -Eo "[^ ]+$"
您还可以将tr
和cut
一起使用:
echo "2015-03-02 21:34:15 20480 dump-2015-03-02-21-34.tar" | tr -s ' ' | cut -d' ' -f4
为什么要python
落后:
python2 -c 'print "2015-03-02 21:34:15 20480 dump-2015-03-02-21-34.tar".split()[3]'
以上所有操作都会产生输出:dump-2015-03-02-21-34.tar