両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン |
awk [2016/05/18 14:00] – [配列] mumeiyamibito | awk [2018/03/13 16:46] (現在) – [シェル変数をパターンとして引き渡す] mumeiyamibito |
---|
* 定義は不要 | * 定義は不要 |
* 配列のインデックスは 1 から始まる (0 ではない) | * 配列のインデックスは 1 から始まる (0 ではない) |
| |
| ==== 演算子 ==== |
| * 演算 |
| * 四則演算が使える |
| * +, -, *, / |
| * インクリメンタル (++) やデクリメント (--) が使える |
| * 代入演算子 (+= や -= など) が使える |
| |
==== if ==== | ==== if ==== |
} | } |
</code>Hello を 3 回出力 | </code>Hello を 3 回出力 |
| |
==== その他 ==== | |
* 改行 | |
* 複数行を1行にしたい(ワンライナー)場合、「;」が改行の代わりになる | |
| |
==== よく使う関数 ==== | ==== よく使う関数 ==== |
* 文字列や配列の長さを出力 | * 文字列や配列の長さを出力 |
| |
==== 演算子 ==== | ==== その他 ==== |
* 演算 | * 改行 |
* 四則演算が使える | * 複数行を1行にしたい(ワンライナー)場合、「;」が改行の代わりになる |
* +, -, *, / | |
* インクリメンタル (++) やデクリメント (--) が使える | |
* 代入演算子 (+= や -= など) が使える | |
| |
===== awk プログラムの例 ===== | ===== awk プログラムの例 ===== |
$ awk 'BEGIN{total = 0; count = 0} $0!~/^#/{total += $2; count ++} END{average = total / count; print "Total: " total; print "Average: " average}' | $ awk 'BEGIN{total = 0; count = 0} $0!~/^#/{total += $2; count ++} END{average = total / count; print "Total: " total; print "Average: " average}' |
</code> | </code> |
| |
| ===== Tips ===== |
| ==== シェル変数をパターンとして引き渡す ==== |
| * ''-v'' オプションで変数を渡しつつ、''$0 ~ VAR'' でマッチさせる\\ <code bash>$ awk -v VAR '$0 ~ VAR{print $0}' FILE</code> |
| * ''VAR'' は変数名 |
| * ''FILE'' は処理するファイル名 |
| * 参考サイト: [[https://stackoverflow.com/questions/39384283/how-to-match-a-pattern-given-in-a-variable-in-awk | regex - How to match a pattern given in a variable in awk? - Stack Overflow]] |
| |
| |
===== 参考サイト ===== | ===== 参考サイト ===== |
* [[http://www.techscore.com/blog/2012/11/19/%E3%81%82%E3%81%88%E3%81%A6%E8%A8%80%E3%81%86%E3%81%BB%E3%81%A9%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84%E3%81%91%E3%82%8C%E3%81%A9%E3%82%82%E3%80%81awk%E3%81%AE%E5%8C%BA%E5%88%87%E3%82%8A%E6%96%87/ | » あえて言うほどではないけれども、awkの区切り文字について TECHSCORE BLOG]] 区切り文字 | * [[http://www.techscore.com/blog/2012/11/19/%E3%81%82%E3%81%88%E3%81%A6%E8%A8%80%E3%81%86%E3%81%BB%E3%81%A9%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84%E3%81%91%E3%82%8C%E3%81%A9%E3%82%82%E3%80%81awk%E3%81%AE%E5%8C%BA%E5%88%87%E3%82%8A%E6%96%87/ | » あえて言うほどではないけれども、awkの区切り文字について TECHSCORE BLOG]] 区切り文字 |
* [[http://itdoc.hitachi.co.jp/manuals/3020/30203S3530/JPAS0241.HTM | awkコマンド(テキストの加工やパターン処理をする)]] | * [[http://itdoc.hitachi.co.jp/manuals/3020/30203S3530/JPAS0241.HTM | awkコマンド(テキストの加工やパターン処理をする)]] |
| * [[http://shellscript.sunone.me/awk.html | AWK リファレンス | UNIX & Linux コマンド・シェルスクリプト リファレンス]] |
| |
| {{tag>プログラミング コマンド}} |