Удалите весь текст перед последним пространством в текстовом файле от CLI

Я хочу удалить все перед последним пространством в текстовом файле от CLI

Текст в качестве примера:

2015-03-02 21:34:15      20480 dump-2015-03-02-21-34.tar

Строка, которая должна остаться, dump-2015-03-02-21-34.tar

2
задан 2 March 2015 в 22:09

3 ответа

Существует много вариантов использования командной строки:

$ 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
6
ответ дан 19 November 2019 в 00:37

sed является по умолчанию жадным, поэтому просто удалите все до последнего пространства:

sed 's/.* //'

или используйте это awk идиома:

awk '$0=$NF'
5
ответ дан 2 December 2019 в 01:25

Попробовать 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

4
ответ дан 2 December 2019 в 01:25

Другие вопросы по тегам:

Похожие вопросы: