我正在运行自定义内核构建并在bash脚本中创建了一个自定义配置文件,现在我需要在Kbuild中注释掉两行以防止bc编译器运行。这些线是......
$(obj)/$(timeconst-file): kernel/time/timeconst.bc FORCE
$(call filechk,gentimeconst)
使用Expresso,我有一个匹配第一行的正则表达式...
^\$\(obj\)\/\$\(timeconst-file\): kernel\/time\/timeconst\.bc FORCE
但是不能让sed在行前插入#。
非常感谢任何帮助。
答案 0 :(得分:1)
sed -i "/<Something that matches the lines to be replaced>/s/^#*/#/g"
这使用正则表达式选择要评论的行/<something>/
,然后将/s/
替换为字符串^
的开头(加上已存在的任何#*
, #
。所以你可以评论已经评论过的行没有问题。/g
表示你找到第一场比赛后继续,所以你可以做批量评论。
我有一个bash脚本,我可以使用上面的内容批评:
sed -i.bkp "/$1/s/^#\+\s*//g" $2
i.bkp
备份名为.bkp
脚本称为./comment.sh <match> <filename>
匹配不必匹配整条线,只是足以使它只能击中你想要的线。
答案 1 :(得分:0)
您可以使用以下sed进行更换:
sed 's,^\($(obj)/$(timeconst-file): kernel/time/timeconst.bc FORCE\),#\1,'
您无需转义(
)
或$
,因为在没有-r
的情况下,它被视为文字,用于分组\(
{使用{1}}。