35

如何从流中的每一行文本中删除第一个单词?

例如,

$ 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 可能能够做到这一点,但我找不到任何这样的例子。

4

5 回答 5

77

根据您的示例文本,

cut -d' ' -f2- yourFile

应该做的工作。

于 2011-10-18T22:19:09.537 回答
14

那应该工作:

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

$ sed -e 's/^\w*\ *//' test.txt
text 1
text 2
text 3
于 2011-10-18T22:01:30.907 回答
10

这是使用的解决方案awk

awk '{$1= ""; print $0}' yourfile 
于 2016-08-16T22:33:23.003 回答
6

运行这个:

sed "s/^some\s//g" myfile

你甚至不需要使用管道。

于 2011-10-18T22:00:30.690 回答
2

要删除第一个单词,直到空格,无论存在多少空格,请使用:sed 's/[^ ]* *//'

例子:

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

$ cat myfile | sed 's/[^ ]* *//'
text 1
text 2
text 3
于 2018-03-01T13:01:21.523 回答