awk
テキストファイル、特に空白類(スペースの他、タブなど)やカンマなどで区切られたデータファイルの処理を念頭に置いた仕様となっているが、一般的なプログラミングに用いることも可能である。 だいたいcut、sort、uniq、head、tail、wcとかでなんとかなるけど、ちょっと複雑なことやろうとしたときに便利だった印象rmaruon.icon
refs
シングルクォートで括る
入力の区切り文字の指定
オプション-F、変数FS
複数指定する
-F [|/] |と/で区切る
-F ' | 'のように指定したときの挙動がわからない
code:sh
$ echo "abc | def | ghi" | awk -F" | " '{print $1,$2,$3,$4,$5}'
abc | def | ghi
$ echo "abc | def | ghi" | awk -F" | " '{print $1,$2,$3,$4}'
abc | def |
$ echo "abc or def or ghi" | awk -F" or " '{print $1,$2,$3}'
abc def ghi
$ echo "abc or def or ghi" | awk -F" or " '{print $1,$2}'
abc def
条件分岐
if文による条件分岐
三項演算子
フィールド1に:を含んでいたらフィールド1の値を返す、そうでなければ99:99を返す
code:awk
($1 ~ /:/) ? $1 : "99:99")
文字列の連結
code:awk
$ echo '!' | awk '{print "hello" " " "world" $0}'
hello world!