###################################################################
データ解析で良く使うコマンド集
###################################################################
・wc
データの数を表示する、特にfortranなんかで何行あるか調べるのに便利。
[kazuono@hoge data]$ wc 660.11*.dat
753 3761 35347 660.110.dat
750 3746 35206 660.111.dat
747 3731 35065 660.112.dat
748 3736 35112 660.113.dat
752 3756 35300 660.114.dat
746 3726 35018 660.115.dat
749 3741 35159 660.116.dat
751 3751 35253 660.117.dat
752 3756 35300 660.118.dat
757 3781 35535 660.119.dat
7505 37485 352295 合計
こんな感じ。
・sed、awk、grep
とにかく重宝します、GMTを使っているのでシェルで何でも出来ます。
しかし書くことが多いのでここではカットしますが、ここがデータ解析で
中核をなします。言いかえるとsed、awk、grepが出来ないとシェルでは
データ解析できません。諦めてfortranやCで解析しましょう。
・for(foreach)
単純なループです、今年の3月まではtcshを使っていたのでforeachを使って
いましたがzshを使うようになったのでbash系のforを使っています。
もし
/data/100.dat
/data/101.dat
/data/102.dat
/data/103.dat
/data/104.dat
/data/105.dat
があり、リスト100.datの中は
[kazuono@hoge data]$ cat /data/100.dat
100 2001/08/29
Khromov Bussol Cruise 2001 CTD Data
45 16.840 144 30.700
953.5
Pr(dbar) Temperature(C) Sal(psu) Oxy(ml/l)
0.000 15.0261 32.9109 6.1449
1.000 15.0261 32.9109 6.1449
2.000 15.0261 32.9109 6.1449
3.000 15.0261 32.9109 6.1449
4.000 15.0261 32.9109 6.1449
5.000 15.0261 32.9109 6.1449
6.000 15.0261 32.9109 6.1449
7.000 14.9933 32.9024 6.1577
8.000 14.9490 32.8910 6.1777
9.000 14.9002 32.8814 6.1883
10.000 14.8109 32.8651 6.1912
こんな感じになっていて、他のリストも同じ並びになっているとします。
ここでT-Sの情報のみを切り出します。まず読みたいリストファイルを作ります。
[kazuono@hoge data]$ cat list.dat
/data/100.dat
/data/102.dat
/data/103.dat
/data/105.dat
ここでファイルをループさせるために次のコマンドを実行する。
[kazuono@hoge data]$ for i in `cat list.dat`
for> do
for> sed '1,5d' $i |\ #5行目までのヘッダを切り取る
for> awk '{print $3,$2}' #3列目(s)、2列目(T)をアウトプット
for> done
このforコマンドを実行することにより、100、102、103、105.datからT-Sのみを
切り出すことが出来ます。tcshの場合は
[kazuono@hoge ~]$ foreach i ( `cat list.dat` )
foreach> sed '1,5d' $i |\
foreach> awk '{print $3,$2}'
foreach> end
です。
あとpasteとか使えばアスキーデータはほとんど思い通りにデータを
切り出すことが出来ると思いますよ。