如何用sed\awk从文件中删除行?

evi*_*ind 5 linux bash awk freebsd sed

我有文件,有行,包含ip with netmask abcd/24 wxyz/32 etc如何删除删除特定行?我正在使用

sed -ie "s#a.b.c.d/24##g" %filname%
Run Code Online (Sandbox Code Playgroud)

但删除后是文件中的空字符串.

它应该在脚本内运行,ip作为参数,也可以在sh下的freebsd中运行.

mtk*_*mtk 7

Sed解决方案

 sed -i '/<pattern-to-match-with-proper-escape>/d' data.txt 
Run Code Online (Sandbox Code Playgroud)

-i 选项将更改原始文件.

Awk解决方案

awk '!/<pattern-to-match-with-proper-escape>/' data.txt
Run Code Online (Sandbox Code Playgroud)

  • -i不会更改原始文件。它会创建一个新文件并覆盖原始文件,从而断开硬链接。 (2认同)

Gur*_*uru 5

使用sed:

sed -i '\|a.b.c.d/24|d' file
Run Code Online (Sandbox Code Playgroud)

命令行参数: 对于输入为命令行参数,请说第一个参数($ 1):

sed -i "\|$1|d" file
Run Code Online (Sandbox Code Playgroud)

根据具体情况,将$ 1替换为适当的参数编号。