awkに行を削除する関数等はないので、print出力の有無で対応する
※MACターミナル(BSD系)での動作確認です。
awkに行を削除する関数等はないので、指定した行のprint出力を行わないようにして、
それ以外をprint出力するようにすれば、行を削除するようにできます。
ファイルに保存したければリダイレクトでファイルに出力するようにすればOKです。
参考:sedで指定した行の削除をする方法(サンプルコードあり)
例えば、下記のin.txtがあったとします。
$ cat in.txt awk find grepfind findgrep
"awk"の文字列の行を削除したい場合のサンプルコードです。
$ cat sample.awk
#!/bin/sh
cat in.txt | awk '
{
if($0 != "awk"){
print $0
}
}
'
下記が実行結果になります。
$ ./sample.awk find grepfind findgrep
続いて、正規表現で、先頭が"grep"の文字列の行を削除したい場合のサンプルコードです。
$ cat sample2.awk
#!/bin/sh
cat in.txt | awk '
{
if($0 !~ "^grep"){
print $0
}
}
' >out.txt
下記が実行結果になります。
$ cat out.txt awk find findgrep
