スポンサーリンク

awkに行を削除する関数等はないので、print出力の有無で対応する

※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-

※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

参考:awkで空白行を削除する

続いて、正規表現で、先頭が"grep"の文字列の行を削除したい場合のサンプルコードです。

$ cat sample2.awk 
#!/bin/sh
cat in.txt | awk '		
	{
		if($0 !~ "^grep"){
			print $0
		}
	}
' >out.txt

下記が実行結果になります。

参考:awkで改行を削除する

$ cat out.txt 
awk
find
findgrep

スポンサーリンク