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

Bash 删除文本流中的第一个单词,bash,sed,awk,cat,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可能可以做到这一点,但我找不到任何这样的例子。运行以下命令: sed "s/^some\s//

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

比如说,

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

运行以下命令:

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

应该可以:

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

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

根据您的示例文本

cut -d' ' -f2- yourFile

应该做这项工作。

这里有一个使用
awk

awk '{$1= ""; print $0}' yourfile 

要删除第一个单词,请使用:
sed's/[^]**/'

例如:

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

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

这将在每行的开头留下一个空格注意:我试图用它来删除
历史记录的输出上的索引,但在历史记录的开头它不起作用,因为较小的数字前面有空格充当分隔符。@JasonDoucette不同的输入格式可能需要不同的解决方案有些关联: