我正在尝试从文件中 grep 以下文本,并尝试使用 sed 命令取消注释。请帮忙
#auth required pam_wheel.so use_uid
需要#
使用 sed grep 并删除完全相同的行
答案1
我已经使用 patch 命令来完成类似的事情。
制作文件的备份副本,使用普通编辑器进行编辑,然后用于diff -u file.bak file > file.patch
生成补丁。
patch -p0 file.patch
然后您可以在下次应用该补丁(-p0
如果您使用完整路径名,则可能需要更改。
这比生成精确的 sed 行更容易,而且更安全,就像文件不匹配一样,补丁将失败而不是破坏文件。这也适用于多行更改。
答案2
使用 GNU sed:
sed -E 's/^#(auth[[:space:]]+required[[:space:]]+pam_wheel\.so use_uid[[:space:]]*)$/\1/' file
如果输出看起来正确,那么您可以添加-i
直接编辑文件的选项。