我有一个正则表达式,使用此正则表达式代码删除bash中的注释
'/^\#/d'
但它也删除了#!这应该不是因为它不是评论标签而是shebang
那么怎样才能忽略#!在正则表达式?
答案 0 :(得分:2)
此行将删除以#开头的所有评论,但后面没有!。
'/^#[^!]/d'
答案 1 :(得分:1)
这使得!
可选
'/^#[^!]*/d'
答案 2 :(得分:0)
试试这个:
awk '/^$/ || (NR == 1 && /^#!/) || /^[^#]/'
这匹配以下行:
打印出匹配的行。
答案 3 :(得分:0)
^\#[^!]
不是很正确,因为它要求!
之后的任何非#
字符,因此它不会删除只有{{#
的字符。 1}}之后没有任何东西。我不知道你正在使用什么样的正则表达式,所以语法可能有所不同,但你正在寻找negative forward lookahead:^#(?!!)
。此外,#
字符根本不需要使用\
进行转义。
答案 4 :(得分:0)
这对我有用:
/^(#[^!]|#$)/d
其中|#$
是匹配单个哈希行特殊情况的附加项。 E.g:
cat commented.sh | sed '/^\(#[^!]\|#$\)/d'