以前、対テキストファイル系のLinuxコマンドの使い方を紹介しましたが、その関連エントリーを。
今回やるのはCSV系の処理ですね。
id name age
1 suzuki 35
2 tanaka 40
などといったデータをヘッダーを無視して年齢順に並べたいとき、
1 ヘッダーを無視したいので2行目から出力する(head -n+1 テキストファイル名)
2 対象データをあるキーで数値としてソートする(sort -k 3,3 -n 通常は数値でなく、文字扱いになるので文字列だと1<10<5<50となる)
これらをパイプでつなぐと下記のようになります。
1 |
head -n +1 ファイル名 | sort -k 1,1 -n |
また特定のキーで特定条件にあたるものの別の列を出力したいとき
上記のCSVの例でいうと20才以上のid,nameを出力したいときはcatとawkを使い下記のように書きます。
1 |
cat テキストファイル | gawk '{ if( $3 >= 20 ) print $1 $2}' |
参考リンク