awk で外部コマンドの結果を取り込む

元ネタは Perl の話です。

awk の中ではバッククォートは使えませんが、getline による取得ができます。

#! /usr/bin/gawk -f
BEGIN {
    while ("ls -al" | getline) {
      print;
    }
}

実行結果は以下のとおり。

$ gawk -f system.awk
合計 12
drwxr-xr-x   2 hi_saito hi_saito 4096 10月 11 21:58 .
drwxr-xr-x 133 hi_saito hi_saito 4096 10月 11 21:56 ..
-rw-r--r--   1 hi_saito hi_saito   56 10月 11 21:58 system.awk

基本的によしなにファイルをクローズしてくれますが、故意にクローズさせることもできます。