awk において、「パターンに一致する行を削除する」というのは、「パターンに一致しない行だけを出力する」ということです。
例えば、下記のようなファイルの #
で始まるコメント行だけを抜き出す、あるいは逆に、コメント行以外を抜き出したいとします。
# This is a comment.
# This is also a comment.
Hello. My name is Maku.
Nice to meet you.
ここで、#
で始まるコメント行だけを抜き出す場合は、下記のように正規表現パターンを指定します。
$ awk '/^#/' input.txt
# This is a comment.
# This is also a comment.
逆に #
で始まらない行を抜き出すには、下記のように、パターンの前に否定を表す !
を付けます。
$ awk '!/^#/' input.txt
Hello. My name is Maku.
Nice to meet you.
これはつまり、指定したパターンに一致する行を削除していることにほかなりません。
コメント行だけを出力するときに、ついでに先頭の #
を削除してから出力するサンプル。
$ awk '/^#/ { sub("^[# ]+", ""); print }' input.txt
This is a comment.
This is also a comment.
sed
コマンドでも同様のことを行うことができます。