この正規表現コードを使用して、bash のコメントを削除する正規表現を取得しました
'/^\#/d'
#! も削除します。これはコメントタグではなくシバンであるため、そうすべきではありません
では、#! を無視するにはどうすればよいでしょうか。正規表現で?
この行は、# で始まるすべてのコメントを削除しますが、その後に ! はありません。
'/^#[^!]/d'
これにより!
、
'/^#[^!]*/d'
これは私のために働く:
/^(#[^!]|#$)/d
where|#$
は、単一のハッシュ ラインの特殊なケースに一致する追加です。例えば:
cat commented.sh | sed '/^\(#[^!]\|#$\)/d'
これを試して:
awk '/^$/ || (NR == 1 && /^#!/) || /^[^#]/'
これは、次の行に一致します。
一致した行が印刷されます。
^\#[^!]
!
の後に非文字を要求するため、まったく正しくありません。そのため、その後に何もない#
行は削除されませ#
ん。使用している正規表現のフレーバーがわからないため、構文が異なる場合がありますが、否定的な前方参照:を探しています^#(?!!)
。また、#
文字をエスケープする必要はまったくありません\
。