如果文件中的每一行包含多个单词,如何删除第一个单词?
文件:
test test2
test3
test4 test5 test6
test7
结果:
test2
test3
test5 test6
test7
另外,我怎样才能保存上面文件中的最后一个单词,即
RESULT2:
test2
test3
test6
test7
答案 0 :(得分:1)
要删除每行的第一个单词,
cut -d' ' -f2- fileName
要获取每一行的最后一个单词并将其保存在新文件中,
awk '{print $NF}' fileName > newFileName
答案 1 :(得分:1)
一个sed解决方案:如果该行包含空格,我们知道有几个单词,所以我们删除所有内容,包括第一个空格。
$ sed '/ /s/[^ ]* //' infile
test2
test3
test5 test6
test7
相反,我们再次检查一个空格;如果有的话,我们删除所有内容,包括最后一个空格(.*
是贪婪的)。
$ sed '/ /s/.* //' infile
test2
test3
test6
test7
如果单词没有用空格分隔,但是例如标签,我们可以用[[:blank:]]
替换上面空格的所有实例:
sed '/[[:blank:]]/s/[^[:blank:]]*[[:blank:]]//' infile
等等。
检查空格/空白并非绝对必要:如果没有,则替换不会执行任何操作,所以
sed 's/[^ ]* //' infile
和
sed 's/.* //' infile
也会有效,但在我看来,检查空白会更清楚地表达意图。