删除文本流中的第一个单词

时间:2011-10-18 21:51:45

标签: bash sed awk cat

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

$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 个答案:

答案 0 :(得分:58)

根据您的示例文字

cut -d' ' -f2- yourFile

应该做的工作。

答案 1 :(得分:10)

这应该有效:

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

$ sed -e 's/^\w*\ *//' test.txt
text 1
text 2
text 3

答案 2 :(得分:7)

以下是使用awk

的解决方案
awk '{$1= ""; print $0}' yourfile 

答案 3 :(得分:4)

运行此sed "s/^some\s//g" myfile您甚至不需要使用管道

答案 4 :(得分:0)

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

示例:

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

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