Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

awkでARGV系変数を扱う

awkにも、引数を取得するARGV系変数があります。
引数の総数を見るARGCという便利変数もついてるので、やりようによっては色々応用が効く可能性があります。

実際のところ

引数で変数A、Bを定義し、awkスクリプト内で参照するようなスクリプトの場合、
もっとも頭を使わない実装なら以下のようにします。

$ gawk 'END{ print "ARGC:"ARGC, "("ARGV[0], ARGV[1], ARGV[2]")"}' A=3 B=4 /dev/null
ARGC:4 (gawk A=3 B=4)

for制御文を使うと、もう少しスマートになります。
二個程度だと逆に長くなりますけどね

BEGIN {
print "ARGC:"ARGC, "("
for (i = 0; i < ARGC; i++)
  print ARGV[i]
print ")"}

参考もと

  • effective awk