if文はどんなプログラミングでも必須の要素となると思います。基本的な構文に絞って、習うより慣れろということでサンプルコードを順にご紹介します。

全て下記のin.txtを入力ファイルとして処理するサンプルコードになります。

 $ cat in.txt 
2014 2 awk
2014 2 param
2015 2 param

スポンサーリンク

awkのif文のサンプルコード

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

シンプルなif文

最もシンプルなif文のサンプルコードです。
in.txtを読み込んで、1列目が2014の行を順に出力しています。

 $ cat sample.awk 
#!/bin/sh
cat in.txt | awk '		
	{
		if($1 == 2014){
			print $0
		}
	}
'

実行すると、1列目が2014の行が出力されているのが確認できます。
 $ ./sample.awk 
2014 2 awk
2014 2 param

スポンサーリンク

and条件のif文

続いてand条件のif文になります。条件部を&&でつないで書いていきます。
1列目が2014、2列目が2の行を表示します。

 $ cat sample2.awk 
#!/bin/sh
cat in.txt | awk '		
	{
		if($1 == 2014 && $2 ==2){
			print $0
		}
	}
'

実行すると、and条件にマッチした行が出力されているのが確認できます。
 $ ./sample2.awk 
2014 2 awk
2014 2 param

or条件のif文

or条件のif文になります。条件部を||でつないで書いていきます。

 $ cat sample3.awk 
#!/bin/sh
cat in.txt | awk '		
	{
		if($1 == 2014 || $2 == 2){
			print $0
		}
	}
'

実行すると、or条件にマッチした行が表示されています。
 $ ./sample3.awk 
2014 2 awk
2014 2 param
2015 2 param

スポンサーリンク

else ifの条件分岐

else ifの条件分岐もよく使うと思いますので、サンプルコードをご紹介します。

 $ cat sample4.awk 
#!/bin/sh
cat in.txt | awk '		
	{
		if($1 == 2015){
			print "1列目が2015にマッチ"
			print $0
		}else if($1 == 2014){
			print "1列目が2014にマッチ"
			print $0
		}
	}
'

下記が実行結果になります。
 $ ./sample4.awk 
1列目が2014にマッチ
2014 2 awk
1列目が2014にマッチ
2014 2 param
1列目が2015にマッチ
2015 2 param



ワンライナーでelse ifを書く場合のサンプルコードを下記の記事で書いています。
よろしければ参考にしてください。
参考:awkのワンライナーのサンプルコード

elseの条件分岐

elseの条件分岐も、よく使うif文になると思いますので、サンプルコードをご紹介します。

 $ cat sample5.awk 
#!/bin/sh
cat in.txt | awk '		
	{
		if($1 == 2015){
			print "1列目が2015にマッチ"
			print $0
		}else{
			print "1列目が2015以外"
			print $0
		}		
	}
'

下記が実行結果になります。
 $ ./sample5.awk 
1列目が2015以外
2014 2 awk
1列目が2015以外
2014 2 param
1列目が2015にマッチ
2015 2 param

スポンサーリンク

文字列比較のif文

これまで数値とのマッチングを例にしていましたが、文字列との比較もよく使うと思いますので、サンプルコードをご紹介します。""で囲むところがポイントなだけです、当たり前かもしれませんが、初心者の方はこういった所からだと思いますので。

 $ cat sample6.awk 
#!/bin/sh
cat in.txt | awk '		
	{
		if($3 == "param"){
			print $0
		}		
	}
'

下記に実行結果を貼り付けます。
 $ ./sample6.awk 
2014 2 param
2015 2 param

if文と正規表現

正規表現を使ってif文の判定もできます。

下記がサンプルコードになります。
3列目の先頭の文字がpとなる行を出力しています。
^は先頭の意味を表すメタ文字です。

 $ cat sample7.awk 
#!/bin/sh
cat in.txt | awk '		
	{
		if($3 ~ /^p/){
			print $0
		}		
	}
'

下記が実行結果になります。
 $ ./sample7.awk 
2014 2 param
2015 2 param



先頭と語尾の文字列を正規表現を使って置換することができます。
サンプルコードも下記の記事で書いています。
参考:awkで先頭・語尾の文字列置換をしたい時は、正規表現とgsub()で解決

否定条件のif文

条件分に!を付けると否定条件ができあがります。

下記がサンプルコードになります。

 $ cat sample8.awk 
#!/bin/sh
cat in.txt | awk '		
	{
		if(!($3 == "awk")){
			print $0
		}		
	}
'

下記が実行結果になります。
 $ ./sample8.awk 
2014 2 param
2015 2 param

スポンサーリンク