regex 我需要使用sed注解掉文本文件中的两行

42fyovps  于 2023-08-08  发布在  其他
关注(0)|答案(2)|浏览(84)

我正在运行一个自定义内核构建,并在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在该行前面插入一个#。
如果你能帮忙的话,我将不胜感激。

atmip9wb

atmip9wb1#

第一个月
它使用正则表达式来选择要注解/<something>/的行,然后用#替换/s/作为字符串^的开头(加上已经存在的任何#*)。所以你可以注解那些已经注解过的行,这没问题。/g表示找到第一个匹配项后继续,因此您可以进行大量评论。
我有一个bash脚本,我可以使用上面的大规模评论:
sed -i.bkp "/$1/s/^#\+\s*//g" $2i.bkp备份名为.bkp的文件
脚本名为./comment.sh <match> <filename>
匹配不需要匹配整行,只需要匹配到您想要的行即可。

gcuhipw9

gcuhipw92#

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

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

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

相关问题