用いたデータの この記事 をご参考ください。 まず、 DPC_EFn_201404-12.txt というテキストファイルの先頭が 201404 の行数(件数)をカウントする場合、下記のコマンドでできます。 (テキストは370万行なので、かなり時間かかります。) $ awk '$0~/^201404/ {print $1}' DPC_EFn_201404-12.txt | wc -l 【結果】380502 でも、awk のみでカウントしたい場合は、下記でも行けます。 $ awk 'BEGIN {count=0} $0~/^201404/ {count=count+1} END {print count}' DPC_EFn_201404-12.txt 【結果】 380502 正規表現ではなくカラム1で指定したい場合、 $ awk 'BEGIN {count=0} $1=="201404" {count=count+1} END {print count}' DPC_EFn_201404-12.txt 【結果】 380502 さて、SQLの select yyyymm, count(*) from DPC_EFn_201404-12 group by yyyymm のようにしたい場合、 $ awk 'BEGIN {FS=OFS="\t"} { if($1 in hash) hash[$1] = hash[$1]+1; else hash[$1]=1} END {for(key in hash) print key,hash[key]}' DPC_EFn_201404-12.txt 【解説】入力ファイルのファイルセパレータ FS と 出力ファイルのファイルセパレータ OFS をTABに指定して、カラム1($1)がハッシュ配列にあれば、その値を+1、ない場合は1をいれます。最後にキーと値のペアを標準出力に出します。 【結果】 201410 435993 201411 391426 201412 403304 201404 380502 2014...