データ処理で用いるTips

画面出力をファイルに保存(リダイレクト)

計算結果を画面に出力するプログラムについて、結果を画面でなくファイルに保存したいとき

$ ./a.out 1>kekka.txt

とすると、kekka.txt というファイルに保存される。(画面には出力されな い)kekka.txtが既に存在してその内容を消去せず、末尾に追加したいときには

$ ./a.out 1>>kekka.txt
とする。(``>''を''>>''に代える。)

ファイルからデータを入力(リダイレクトその2)

キーボードからデータを入力するプログラムについて、キーボードの代りにファイルの中身をそのまま入力したいとき

$ ./a.out < data.xy

とすると、data.xyに記録してある文字がプログラムに入力される。

出力を画面に表示しつつ同時にファイルに保存

リダイレクトで画面出力先をファイルにすると、出力が画面では確認できない。ファイルに出力すると同時に画面にも表示させるには

$ ./a.out | tee kekka.txt

とする。(kekka.txt というファイルに保存される。)kekka.txtが既に存在してその内容を消去せず、末尾に追加したいときには

$ ./a.out | tee -a kekka.txt
とする。(オプション「-a」をつける。)

大きなデータの分割

大きなデータのファイルを小さいデータのファイルに分割したいとき、

$ split -l 5 largedata smalldata

とすると、「largedata」が5行毎に(``-l 5''の数字で行を指定)、 「smalldataaa」、「smalldataab」、「smalldataac」......という小さい ファイルに分割される。(最後に指定した''smalldata''の文字列に、aa, ab, ac, ad, ......の順に文字が追加されたファイルができる)

たくさんのデータに一挙に処理をしたいとき

smalldataaa, smalldataab, smalldataac, ......等数多くのデータファイル全てに、プログラム処理をしたいとき、

$ for name in smalldata*
> do
> ./a.out < $name
> done

とすると、smalldata*にマッチする全てのファイル(*の部分は何でもマッチ->ワイルドカード)に対して、./a.out < smalldaaaなどが実行される。