我有以下testing文件
AAA BBB CCC
使用下面的sed我可以注释掉BBB行。
# sed -e '/BBB/s/^/#/g' -i file
如果在开始时没有#号,我只想注释掉该行。
# sed -e '/^#/! /BBB/s/^/#/g' file sed: -e expression #1, char 7: unknown command: `/'
任何想法我可以如何实现这一目标?
假设你没有多个#
的行,这将工作:
sed -e '/BBB/ s/^#*/#/' -i file
注意:你不需要/ g,因为每行最多只有一个替换。
我觉得这个解决方案是最好的。
sed -i '/![^#]/ s/\(^.*BBB.*$\)/#\ \1/' file
不管有多少个“#”符号都不重要,它永远不会再添加一个符号。 如果您要搜索的模式不包含“#”,则会将其添加到行的开头,并且还会添加尾随空格。
如果你不想要尾随空间
sed -i '/![^#]/ s/\(^.*BBB.*$\)/#\1/' file
sed -i '/![^#]/ s/\(^.*BBB.*$\)/#\ \1/' file
这不适用于我的关键字*.sudo
,根本没有评论…
Ony下面的语法工作: sed -e '/sudo/ s/^#*/#/' file