if文はどんなプログラミングでも必須の要素となると思います。基本的な構文に絞って、習うより慣れろということでサンプルコードを順にご紹介します。
全て下記のin.txtを入力ファイルとして処理するサンプルコードになります。
$ cat in.txt 2014 2 awk 2014 2 param 2015 2 param
スポンサーリンク
awkのif文のサンプルコード
※awkの使い方をまとめて一覧にしました。
参考: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
スポンサーリンク