awk

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
awk [2016/05/18 14:00] – [配列] mumeiyamibitoawk [2018/03/13 16:46] (現在) – [シェル変数をパターンとして引き渡す] mumeiyamibito
行 67: 行 67:
   * 定義は不要   * 定義は不要
   * 配列のインデックスは 1 から始まる (0 ではない)   * 配列のインデックスは 1 から始まる (0 ではない)
 +
 +==== 演算子 ====
 +  * 演算
 +    * 四則演算が使える
 +      * +, -, *, /
 +    * インクリメンタル (++) やデクリメント (--) が使える
 +    * 代入演算子 (+= や -= など) が使える
  
 ==== if ==== ==== if ====
行 107: 行 114:
 } }
 </code>Hello を 3 回出力 </code>Hello を 3 回出力
- 
-==== その他 ==== 
-  * 改行 
-    * 複数行を1行にしたい(ワンライナー)場合、「;」が改行の代わりになる 
  
 ==== よく使う関数 ==== ==== よく使う関数 ====
行 134: 行 137:
     * 文字列や配列の長さを出力     * 文字列や配列の長さを出力
  
-==== 演算子 ==== +==== その他 ==== 
-  * 演算 +  * 改行 
-    * 四則演算が使える +    * 複数行を1行にしたい(ライナー)場合、「;改行のわりになる
-      * +, -, *, / +
-    * インクリメンタル (++) やデクリメト (--) が使える +
-    * 入演算子 (+= や -= ど) が使え+
  
 ===== awk プログラムの例 ===== ===== awk プログラムの例 =====
行 171: 行 171:
 $ 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]]
 +
  
 ===== 参考サイト ===== ===== 参考サイト =====
行 177: 行 185:
   * [[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>プログラミング コマンド}}
  • awk.1463547624.txt.gz
  • 最終更新: 2016/05/18 14:00
  • by mumeiyamibito