標準入力、または、引数で指定されたファイルを読み込み、パターンにマッチした行に対してアクションを実行します。
- 基本構文
awk 'pattern { action }' input_file
AWK標準入力、または、引数で指定されたファイルを読み込み、パターンにマッチした行に対してアクションを実行します。
2.前処理/後処理付きのテキスト処理
awk 'BEGIN { ... } pattern { action } END { ... }' input_file
awk 'BEGIN {テキストを読む前に行う処理} /pattern/ {テキスト1行に対して行う処理} END {テキストを読み終わった後に行う処理}'
BEGINブロックのみとENDブロックは任意ブロックであるため、省略可能、いずれかのみ使うことも可能。
3.特殊変数($0, 1 ...n)
$0: その行の全内容
$1: 1つ目のフィールド(デフォルトの区切り文字はスペース)
$2: 2つ目のフィールド
4.pattern
pattern を省略するとすべての行に対して action を行います。actionを省略するとprint $0の内容をプリントする。
patternの形は普通の条件式と正規表現の2種類があります。正規表現の場合は「//」で囲む。
正規表現を使う場合のオペレーター:
~ : あるパターンにマッチする
!~ : あるパターンにマッチしない
5.使用例:
cat hoge.txt | awk '$1 ~ /^ab/ {print $2}'
意味:hoge.txtの全行に対して、1フィールド目の頭がabの行のみ2桁目をプリントする
cat hoge.txt | awk '$1 !~ /^ab/ {print $2}'
意味:hoge.txtの全行に対して、1フィールド目の頭がabでない行のみ2桁目をプリントする
cat hoge.txt | awk '$1 == "ab" {print $2}'
意味:hoge.txtの全行に対して、1フィールド目がabの行のみ2桁目をプリントする
cat hoge.txt | awk -f 1.awk
意味:awkのコードを記述したファイルを利用して、hoge.txtに対して文字列加工を行う。
cat hoge.txt | awk 'BEGIN { print "Hello World"} {print $2}'
意味:一行目を読み込む前にHello Worldを出力してから、全行に対して2つ目のフィールドを出力する。
cat hoge.txt | awk '{print $2} END { print "Thank you"}'
意味:全行に対して2つ目のフィールドを出力してから、Thank youを出力する。