よく使うawkコマンドまとめ

More than 3 years have passed since last update.


これってなんぞ

僕は記憶力がよろしくないので、awkのコマンドをここにメモしていきます。


変数の取り扱い

\$0 = 行全体

\$1 = 1列目

という順に続く。


抽出


列名だけ指定

cat data.txt | awk '{print $1, $2, $4}' > hogehoge.txt


条件付き


第n列がm以上のときを抽出

n = 3, m = 10とする。

cat data.txt | awk '$3 > 10 {print}' > hogehoge.txt


最大値・最小値

第3列における例として。


  • 最大値

    cat data.txt | awk '{if(m<$3) m=$3} END{print m}'


  • 最小値

    cat data.txt | awk 'BEGIN{m=100000}{if(m>$3) m=$3} END{print m}'



重複


重複行を削除

cat data.txt | awk 'before != $0 {print; before = $0}' > hogehoge.txt


第n列と第m列で重複している行を削除

cat data.txt| awk '$1!=$2{print}' > hogehoge.txt


UNIXtimeから日付へ変換

またしても第3列をいじる。

cat data.txt | awk '{print $1, $2, strftime("%Y-%m-%d",$3)}' > hogehoge.txt

ちなみに、今回は、日付に関して年月日にしたが、時間とかも書きたければ

%Y-%m-%d %H:%M:%S

とかにすればOK。