Unix 有条件地删除第一个单词
如果文件中的每一行都包含多个单词,如何从中删除第一个单词 文件: 结果:Unix 有条件地删除第一个单词,unix,sed,Unix,Sed,如果文件中的每一行都包含多个单词,如何从中删除第一个单词 文件: 结果: test2 test3 test5 test6 test7 另外,如何仅保存上述文件中的最后一个单词,即 结果2: test2 test3 test6 test7 要删除每行的第一个字 cut -d' ' -f2- fileName 要获取每行的最后一个字并将其保存在新文件中 awk '{print $NF}' fileName > newFileName 要删除每行的第一个字 cut -d' ' -f2
test2
test3
test5 test6
test7
另外,如何仅保存上述文件中的最后一个单词,即
结果2:
test2
test3
test6
test7
要删除每行的第一个字
cut -d' ' -f2- fileName
要获取每行的最后一个字并将其保存在新文件中
awk '{print $NF}' fileName > newFileName
要删除每行的第一个字
cut -d' ' -f2- fileName
要获取每行的最后一个字并将其保存在新文件中
awk '{print $NF}' fileName > newFileName
sed解决方案:如果一行包含一个空格,我们知道有几个单词,所以我们删除第一个空格之前的所有内容
$ sed '/ /s/[^ ]* //' infile
test2
test3
test5 test6
test7
相反,我们再次检查空间;如果有,我们将删除最后一个空格之前的所有内容(*
是贪婪的)
如果单词不是用空格分隔的,例如制表符,我们可以用[:blank:][]
替换上面空格的所有实例:
sed '/[[:blank:]]/s/[^[:blank:]]*[[:blank:]]//' infile
等等
严格来说,检查空格/空白并不是必需的:如果没有空格,则替换不会起任何作用,因此
sed 's/[^ ]* //' infile
及
也可以,但检查空白的意思更清楚,在我看来。
< P>一个SED解决方案:如果该行包含一个空格,我们知道有几个单词,所以我们删除所有到并包括第一个空间。$ sed '/ /s/[^ ]* //' infile
test2
test3
test5 test6
test7
相反,我们再次检查空间;如果有,我们将删除最后一个空格之前的所有内容(*
是贪婪的)
如果单词不是用空格分隔的,例如制表符,我们可以用[:blank:][]
替换上面空格的所有实例:
sed '/[[:blank:]]/s/[^[:blank:]]*[[:blank:]]//' infile
等等
严格来说,检查空格/空白并不是必需的:如果没有空格,则替换不会起任何作用,因此
sed 's/[^ ]* //' infile
及
也适用,但在我看来,对空白的检查更清楚地表达了意图。