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