2009/09/11

非エンジニアのためのLinux環境でのファイル整形

テーブル構造になってるファイルとかの整形って、Linuxのコマンドである程度の事は出来てしまいます・・まぁperlのワンライナー使えば更に簡単に色んな事できるようになるけど。

ってことで、良く使うファイル編集方法。使ってる人にとってはかなり初歩的でどうでも良い事だけどまとめておきます。

hoge.tsv
A B C D
- - - -
- - - -

こんな感じのTSVファイルがあったとして(まぁCSVでも良いですが)、Linuxコマンドで色々できます。

例えばこんな感じで。。Excelとかでやるよりよっぽど楽。っていうか数百万とか数千万とかを扱う事が多いので、65,536行しか表示できない(Excel2007は1,048,576行でセル数が1024倍になってるけど)Excelはそもそも使い物にならん・・・と。

-A行とD行だけ取り出して新しくファイルを作りたい
$cat hoge.tsv | cut -f1,4 > hoge_new.tsv

-どこかに"mogo"という文字があったらその行は削除
$cat hoge.tsv | sed '/mogo/d' > hoge_new.tsv
$grep -v mogo hoge.tsv > hoge_new.tsv

-n番目をキーにしてソート
$sort -k n,n hoge.tsv > hoge_new.tsv


(暇があったら他にも色々・・後で書く)

3 件のコメント:

oza さんのコメント...

列単位の処理やるなら圧倒的にawkですよね.

アレ、でも非プログラマってsedとかawkとかcutとか使うのかな...w

Lightthings さんのコメント...

うん、awkも時々使うけど、perlワンライナーでやっちゃうかなー。

あ、「非プログラマの方こそぜひ使ってください」的な意味でねwプログラマが使ってる技術を少しでも使えると、世の中の事務作業ってものすごく簡単になると思うんだよねー。

oza さんのコメント...

確かに!同意します.