awkの使い方
awkはいうなればフィルタリング言語です。変数、配列宣言もする必要がありません。かんたんに言ってしまえば、標準出力をフィルタできるし、クエリもできる言語です。DBでやりたいようなことを標準出力上でできてしまいます。
構造的なテキストデータがあった場合、それをDBのように集計したいときには、awkが威力を発揮するでしょう。私の場合だと、たとえばログファイルの加工をするときなどに重宝します。
awkで連想配列を利用し、出力した結果はばらばらになります。これはハッシュテーブルとlinked-listというデータ構造を用いているからです。順番通りに並べるには
sort -n -k 2,2 (昇順)
sort -r -n -k 2,2 (降順)
などの、順序を並び替えるコマンドを利用する必要があります。
- 書き方
パターン{
アクション
}
のように記述します
ひとつのファイルの中にパターン{アクション}はいくつ存在してもよいです
BEGIN:最初に一度だけ実行される
BEGIN{
}
END:最後に一度だけ実行される
END{
}
- 正規表現も利用可能
例. 3つめのフィールドの値がtからはじまる場合にそのレコードを表示
$3 ~/^t.*/ {
print $0
}
{print}で{print $0}と同意。つまり、そのレコードデータのフィールド全てを表示します
- awkの関数内の変数はグローバル変数です
-
FS:Field Separator
区切り指定 - RS:Record Separator
改行指定 - OFS:Output Field Separator
出力時区切り指定 - ORS:Output Record Separator
出力時改行指定
参考
awkのつかいかた
https://www.atmarkit.co.jp/ait/articles/1706/16/news019.html
awk ファイルの渡し方
http://itdoc.hitachi.co.jp/manuals/3020/30203S3530/JPAS0241.HTM