我需要使用 sed 来注释掉文本文件中的两行

I need to use sed to comment out two lines in a text file

我是 运行 自定义内核构建并在 bash 脚本中创建了自定义配置文件,现在我需要在 Kbuild 中注释掉两行以防止 bc 编译器运行。线条是...

$(obj)/$(timeconst-file): kernel/time/timeconst.bc FORCE
    $(call filechk,gentimeconst)

使用 Expresso,我有一个匹配第一行的正则表达式...

^$\(obj\)\/$\(timeconst-file\): kernel\/time\/timeconst\.bc FORCE

Regex Match

但无法让 sed 在行前实际插入 #。

如有任何帮助,我们将不胜感激。

您可以使用以下sed 进行替换:

sed  's,^\($(obj)/$(timeconst-file): kernel/time/timeconst.bc FORCE\),#,'

您不需要转义 ( )$,因为在没有 -r 的 sed 中它被视为文字,用于分组 \( \)被使用。

sed -i "/<Something that matches the lines to be replaced>/s/^#*/#/g"

这使用正则表达式 select 您要评论的行 /<something>/,然后替换 /s/ 字符串的开头 ^(加上任何 #* 已经在那里,#。所以你可以评论已经评论过的行没问题。/g 意味着在你找到第一个匹配项后继续,所以你可以进行大量评论。

我有一个 bash 脚本,我可以使用上面的脚本进行群发评论:

sed -i.bkp "//s/^#\+\s*//g" i.bkp 备份名为 .bkp

的文件

脚本被调用./comment.sh <match> <filename>

匹配不必匹配整行,只匹配你想要的行即可。