忘れないようにメモっとく

機械学習とかプログラミングとか。

awk

awkユーザーのためのPerlワンライナー

awk(と他のコマンド)ユーザーがPerlワンライナーを覚えるとうれしいこと↓↓ -aオプションでawkと似たような書き方ができる(awkとの比較を参考) カラム1とカラム2を表示 awk '{print $1, $2}' perl -waln -e 'print $F[0], $F[1]' awkよりperlの方が速い場合が…

awkで列の種類ごとに集計する。

awk

連想配列のキーにグループの名前を使えばおk。 集計するファイル↓↓ hoge.txt りんご 230 りんご 300 ばなな 190 ばなな 190 みかん 110 りんご 310 ばなな 190 みかん 110 みかん 130 awkファイル↓↓ sum.awk { sum[$1]+=$2 }; END { for (key in sum) { prin…

awkで列方向に集計する。

awk

合計、平均、分散、標準偏差 列方向の集計やりづらいなって思ってたけど、for (i=1;i<=NF;i++)使って楽チン。 集計するファイル↓↓ hoge.txt 840 394 783 798 911 197 335 768 277 553 477 628 364 513 952 916 awkファイル↓↓ sum.awk BEGIN { print "sum", "…

awkで重複行を高速削除する。

awk

awkで重複行を高速削除する。 行の重複削除で調べるとよく出てくるのが、sort & uniqを使ったコマンド。 ソートはファイルが大きくなると、実行にかなり時間がかかってしまいますね。 ソートせずに高速実行できるのが、次のawkコマンド。 awk '!colname[$1]+…

joinコマンド ~複数フィールドで結合する。

Unixコマンドのjoinが便利。2つのファイルでフィールドを指定すれば、SQLの内部結合みたいなことができる。 SQLだとテーブル作ってデータ流し込むのが面倒だし、構造が複雑じゃないデータなら、サクッと実行できてよいよい。joinで指定できるのは各ファイル…

awkで最大値、最小値を求める

awk

1列目の最大値、最小値を表示する。 awk '{if(min==""){min=max=$1}; if($1>max) {max=$1}; if($1< min) {min=$1};} END {print min, max}' data.txt