如何删除文件中每一行的第五个单词?

如何删除文件中每一行的第五个单词?

我想删除文件中每行的第五个单词。

文件的当前内容:

File is not updated or and will be removed  
System will shut down f within 10 seconds  
Please save your work 55 or copy to other location  
Kindly cooperate with us D  

预期输出:

File is not updated and will be removed  
System will shut down within 10 seconds  
Please save your work or copy to other location  
Kindly cooperate with us

答案1

怎么样cut

$ cut -d' ' -f1-4,6- file.txt 
File is not updated and will be removed  
System will shut down within 10 seconds  
Please save your work or copy to other location  
Kindly cooperate with us
  • -d' '将分隔符设置为空格

  • -f1-4,6-选择第一个到第四个字段(字),保留第五个字段,然后继续从第六个字段到其余字段打印。

答案2

解决方案cut

cut -d ' ' -f1-4 -f6- FILE

答案3

awk:删除第五个字段

awk '{for (i=5; i<NF; i++) $i = $(i+1); NF--};1' file

如果您想就地保存文件:https://stackoverflow.com/q/16529716/7552

您可以只删除第 5 个字段的内容,但这会留下 2 个连续的输出字段分隔符:

awk '{$5 = ""};1' file

答案4

格伦提供了一个相当于的解决方案

awk '{$5="";打印}'文件

正如他和其他人所指出的,这

  1. 去除每一行的前导和尾随空白,
  2. 将每个空白字符串(空格和/或制表符)压缩为单个空格,并且
  3. 第四个和第六个单词之间留有两个空格。

解决第三个问题的技巧是

awk '{$5="";打印}'文件| sed 's // /'

这仍然会在包含五个或更少单词的任何行的末尾留下一个或多个添加的空格。如果您可以识别出一个永远不会出现在输入中的单词,

awk '{$5="独角兽";打印}'文件| sed 's/ *独角兽//'

即使这样(但仍然留下问题 1 和 2)。

相关内容