删除包含不同文件中不同位置的给定字符串的行

ajt*_*ist 2 bash shell awk grep sed

作为下面的示例,假设我要删除的行包含字符串"X".如何在循环中删除每个相应文件中的那一行?我可以使用grepsed/或任何其他shell/bash程序来做这件事吗?

Line  File 1  File 2
   1       A       A
   2       B       B
   3       X       C
   4       C       X
   5       D       D
   6       E       X
   7       X       E
Run Code Online (Sandbox Code Playgroud)

Rav*_*h13 6

如果你想简单地删除一行中有"X"字符的行,那么这个简单的grep命令可以在这里进行救援:

grep -v "X"   Input_file
Run Code Online (Sandbox Code Playgroud)

sed现在添加解决方案,这将改变Input_file本身:

sed -i.bak '/X/d'  file*
Run Code Online (Sandbox Code Playgroud)

  • 你可以提一下如何使用`grep`来改变现有文件. (2认同)
  • @anubhava,肯定先生你的意思是`sed -i.bak'/ X/d'文件*`因为OP告诉很多文件都在那里:) (2认同)