@{string} ${one_char} set another variable
我有一个这样的日志文件,我想在一个sed命令中用“#”注解上面的所有行。我用的是sed "/^\s*{string}$/ s|^|#|; /^\s*log/, /);$/ s|^|#|",但是不行。我希望从下面开始评论所有模式
sed "/^\s*{string}$/ s|^|#|; /^\s*log/, /);$/ s|^|#|"
y1aodyip1#
试试看
#!/bin/bash sed -i "s/\(@{string}\)/#\1/; s/\(\${one_char}\)/#\1/; s/\(set another variable\)/#\1/" input.txt
s/SOMETHING/#SOMETHING/
#
###@{string}
sed "s///"
ih99xse12#
这可能对您有用(GNU sed):
sed -E 's/^(\s*[@$]\{\w+\}|(\s*\w+){3})$/#&/' file
打开扩展正则表达式-E。尝试混合使用类等价、交替和反向引用来匹配这三个表达式,如果成功,则在前面添加#。如果要在上面的示例中完全成功匹配,请使用:
-E
sed -E 's/^(\s+(@\{string\}|\$\{one_char\}|set another variable))$/#&/' file
2条答案
按热度按时间y1aodyip1#
试试看
s/SOMETHING/#SOMETHING/
#
来再次注解该行。2例如,如果你运行它3次,它将产生###@{string}
。#
不是该行的第一个字符,则可以在sed "s///"
的前几部分添加空格。ih99xse12#
这可能对您有用(GNU sed):
打开扩展正则表达式
-E
。尝试混合使用类等价、交替和反向引用来匹配这三个表达式,如果成功,则在前面添加
#
。如果要在上面的示例中完全成功匹配,请使用: