awkで合計を出すぞぉ〜

プログラムで何行書いたのか知りたくなるのが世の中の常(いつから?

Linuxコマンドフル活用でプログラムの行数を知りたいです。

ってことで、道具

  • find ファイルを探す
  • wc テキストファイルの行数がわかる
  • awk よくわからない

とりあえず、findとwcを組みあせてっと。

$ find -type f -exec wc {} \;
 12  17 124 ./boot.S
 13  33 239 ./Makefile
 3  9 79 ./qemu.bat

wcの出力は、行数、単語数、文字数。で、プログラムの合計を出したいぞ〜

ふむふむ。簡単ですね・・・

info.awk
{print $0}
{lines += $1}
{words += $2}
{chars += $3}
END {print " " lines " " words " " chars}
$ find -type f -exec wc {} \; | awk -f info.awk
 12  17 124 ./boot.S
  5  22 100 ./info.awk
 13  33 239 ./Makefile
 3  9 79 ./qemu.bat
 33 81 542

おぉ。出た!!ボクノスは33行に成長しました(笑

なんと,C言語風にも書ける。

{
        print $0
        lines += $1
        words += $2
        chars += $3
}
END {
        print " " lines " " words " " chars
}

馴染みやすい感じです。

なお、 AWKという名前は作者の3人の頭文字を並べたもので、Kは「プログラミング言語 C」の著者 Kerninghanです。Aは名著「データ構造とアルゴリズム」の著者の一人 Aho、Wは Weinbergerです。情報科学の三巨人の共作ですね。

すっげぇ!!暇があったらソースを読みたいと思います・・・ってよく考えたら、オリジナルのソース読めない。cygwinに付いてるやつはgawkなのですよハイ。

プログラミング言語AWK (新紀元社情報工学シリーズ)

プログラミング言語AWK (新紀元社情報工学シリーズ)

暇があったら読みたいと思います。こっちは本物だし。