################################################################### データ解析で良く使うコマンド集 ################################################################### ・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とか使えばアスキーデータはほとんど思い通りにデータを 切り出すことが出来ると思いますよ。