機略戦記

Maneuver warfare

awkの"パターン"でできることのメモ

  • 入力例
$  input.txt
a2
a3
b1
b2
b3
c1
c2
c3

基本的なやつ

  • 正規表現に一致した行だけを処理する
$ awk '/a/' input.txt
a1
a2
a3

複数のパターンの組合せ

  • or
$ awk '/a/ || /b/' input.txt
a1
a2
a3
b1
b2
b3
  • and
$ awk '/a/ && /1/' input.txt
a1

その他

  • not
$ awk '!/a/'       input.txt
b1
b2
b3
c1
c2
c3
  • 範囲
    • カンマで区切ったパターンに対して、1つめのパターンから2つめのパターンまでの間に対してマッチする。
$ awk '/a/ , /b/' input.txt
a1
a2
a3
b1
  • 処理の開始/終了時にマッチ
    • BEGIN, END
  • ファイルの処理開始/終了時にマッチ
    • BEGINFILE, ENDFILE

BEGIN処理全体の開始時 に呼ばれ、 BEGINFILEファイルの処理開始時 によばれる。
例えば、awkに2つのファイルを処理させた場合、BEGINは1回、BEGINFILEは2回よばれる事になる。

余談

awkかわいい