Удалить первое слово в текстовом потоке - PullRequest
27 голосов
/ 19 октября 2011

Как бы я удалил первое слово из каждой строки текста в потоке? т.е.

$cat myfile 
some text 1
some text 2
some text 3

что я хочу это

$cat myfile | magiccommand 
text 1
text 2
text 3

Как бы я поступил так, используя bash? Я мог бы использовать awk '{print $ 2 $ 3 $ 4 $ 5 ....}', но это грязно и привело бы к дополнительным пробелам для всех нулевых аргументов. Я думал, что sed мог бы сделать это, но я не мог найти никаких примеров этого. Любая помощь приветствуется! Спасибо!

Ответы [ 5 ]

61 голосов
/ 19 октября 2011

на основе вашего примера текста,

cut -d' ' -f2- yourFile

должен сделать работу.

12 голосов
/ 19 октября 2011

Это должно работать:

$ cat test.txt
some text 1
some text 2
some text 3

$ sed -e 's/^\w*\ *//' test.txt
text 1
text 2
text 3
7 голосов
/ 17 августа 2016

Вот решение с использованием awk

awk '{$1= ""; print $0}' yourfile 
5 голосов
/ 19 октября 2011

запустить это sed "s/^some\s//g" myfile вам даже не нужно использовать трубу

0 голосов
/ 01 марта 2018

Чтобы удалить первое слово, пока не будет пробела, независимо от того, сколько пробелов существует, используйте: sed 's/[^ ]* *//'

Пример:

$ cat myfile 
some text 1
some  text 2
some     text 3

$ cat myfile | sed 's/[^ ]* *//'
text 1
text 2
text 3
...