0

我有一个正则表达式,它使用这个正则表达式代码删除 bash 中的注释

'/^\#/d'

但它也删除了 #! 这不应该是因为它不是评论标签而是 shebang

那么如何忽略#!在正则表达式?

4

5 回答 5

2

此行将删除所有以 # 开头但后面不跟 ! 的注释。

'/^#[^!]/d'
于 2013-05-03T07:36:04.083 回答
1

This makes the ! optional

'/^#[^!]*/d'
于 2013-05-03T07:37:01.367 回答
0

Try this:

awk '/^$/ || (NR == 1 && /^#!/) || /^[^#]/'

This matches lines that:

  • are empty, OR
  • are the first line and start with hashbang, OR
  • start with a character that is not a hash.

Matched lines are printed out.

于 2013-05-03T07:37:21.230 回答
0

这对我有用:

/^(#[^!]|#$)/d

|#$匹配单个哈希行特殊情况的加法在哪里。例如:

cat commented.sh | sed '/^\(#[^!]\|#$\)/d' 
于 2013-05-03T11:39:14.573 回答
0

^\#[^!]不太正确,因为它要求!之后的任何非字符#,所以它不会删除后面#没有任何内容的行。我不知道您使用的是什么风格的正则表达式,因此语法可能会有所不同,但您正在寻找负前瞻^#(?!!)。此外,#角色根本不需要转义\

于 2013-05-03T09:17:53.163 回答