bash - 如何使用 Sed 取消注释包含特定字符串的行?

标签 bash awk sed

文件中的行:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2001 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2002 -j ACCEPT

注释掉让我们说包含的行

2001

我可以简单地运行这个 SED 命令:

sed -i '/ 2001 /s/^/#/' file

但现在我该如何恢复?

就像取消注释同一行一样?

我试过了

sed -i '/ 2001 /s/^//' file

那行不通。

最佳答案

是的,要使用 sed 注释包含特定字符串的行,只需执行以下操作:

sed -i '/<pattern>/s/^/#/g' file

并取消注释:

sed -i '/<pattern>/s/^#//g' file

在你的情况下:

sed -i '/2001/s/^/#/g' file    (to comment out)
sed -i '/2001/s/^#//g' file    (to uncomment)

最后的选项“g”表示全局变化。如果您只想更改模式的单个实例,请跳过此步骤。

关于bash - 如何使用 Sed 取消注释包含特定字符串的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24889346/

相关文章:

shell - 用另一个文件中指定的值替换字段

shell - 显示除最后一个字段以外的所有字段

bash - 使用 awk 从 txt 保存变量

linux - 如何在远程服务器上以 root 身份执行本地脚本?

shell - awk 在 shell 中打印数组的一部分

c - 什么是换行符—— '\n'

bash - Rundeck 跨作业步骤共享变量

java - 通过 Java JSch 库在远程机器上执行本地脚本

bash - 更改 sed 中许多文件的最后一行 - sed 仅更改第一行

linux - 删除多行 block 的脚本