#! /bin/csh# 一行目に起動するシェルを指定．# '#!'の文字の後に，起動するシェルのファイル名を書く．# たいていのシステムなら，Bourne Shellの場合は'/bin/sh，# C Shellの場合は'/bin/csh'である．（GMT開発者の方はC Shell派のようだが．）# 以下は'C Shell'の文法でスクリプトを書いている．# シェル変数に，パラメータを代入する．# パラメータとは，データファイル名や書かせる値の範囲，# タイトルの文字列などである．# '#'記号の後には，コメントを書くことが出来る．set input     = e1106d1.spec2    # 入力データファイル名（スペクトルのデータ）．set output    = specplot1.ps     # 出力させるPostScriptファイル名．set fmin      = 0.1              # 書かせる周波数の最小値set fmax      = 100              # 書かせる周波数の最大値．set amin      = 0.000001         # 書かせる地動速度の最小値．set amax      = 0.01             # 書かせる地動速度の最大値set range     = $fmin/$fmax/$amin/$amax# シェル変数fmin,fmax,amin,amaxを，rangeというシェル変数に代入している．# シェル変数の前に'$'マークを付けると，シェル変数の値に展開される．# この場合，rangeには'0.1/100/0.000001/0.01'という文字列が代入される．set sizex     = 12.0             # 図のX方向の大きさ指定(cm)．set sizey     = 12.0             # 図のY方向の大きさ指定(cm)．set x_axis    = a1pf3:"Hz":      # 横軸の書式とタイトルの指定．set y_axis    = a1pf3:"(cm/s)s": # 縦軸の書式とタイトルの指定．set title     = :."$input":      # タイトルの指定．                                 # 入力ファイル名($input)を使っている．set axis_tick = WeSn             # グラフの数字を書く軸を指定．set xorg      = 9.0              # グラフの原点の位置．紙の左下からX方向の距離．set yorg      = 5.0              # グラフの原点の位置．紙の左下からX方向の距離．awk '{if(NR>=5) print $1,$2}' $input | \psxy -JX{$sizex}l/{$sizey}l -R$range -B$x_axis/$y_axis$title$axis_tick \ -X$xorg -Y$yorg -V >! $output# psxyを使って，実際にグラフを書かせている命令．# シェルスクリプトの場合，行が長くなった場合には，# 行末にバックスラッシュ'\'を書くと次の行も続いていると見なされる．# 上の命令を，シェル変数を展開して書くと以下のようになる．# 変数展開したものを使って，順次説明する．################################################################ awk '{if(NR>=4) print $1,$2}' e1106d1.spec2 | \# psxy -JX12.0l/12.0l -R0.1/100/0.000001/0.01 -Ba1pf3:"Hz":/a1pf3:"(cm/s)s"::.e1106d1.spec2:WeSn \#  -X9.0 -Y5.0 -V >! specplot1.ps############################################################### awk '{if(NR>=5) print $1,$2}' e1106d1.spec2 | ## データファイルの４行目まではヘッダーなので，# awkを使って５行目以降のみを標準出力させている．# その出力をパイプでpsxyに標準入力から渡している．# NRはawkの予約変数で，データの行数を表す．# これは，以下のようにtailコマンドを使ってもよい．（こちらの方が手軽かも）# tail +5 e1106d1.spec2### 以下psxyコマンドのオプション #### -JX12.0l/12.0l ## X軸の長さを12cm，Y軸の長さを12cmに指定．# 小文字のエル'l'は，グラフの目盛をlog10にすることを表す．# -R0.1/100/0.000001/0.01 ## グラフを書かせる値の範囲を指定．# 0.1/100がX軸の範囲，0.000001/0.01がY軸の範囲を示している．# -Ba1pf3:"Hz":/a1pf3:"(cm/s)s"::.e1106d1.spec2:WeSn ## グラフの枠の指定．（項目多数）# -B/X軸の指定/y軸の指定:.タイトル:数字を書く軸の指定 という具合．#   a1p               X軸の数字の間隔と書式を10^nHz(TeX形式)にしている．#   f3                X軸の目盛間隔#   :"Hz":            X軸のタイトル#   a1pf3             Y軸の数字，目盛間隔の指定（X軸と同じ）．#   :"(cm/s)s":       Y軸のタイトル.#   :.e1106d1.spec2:  グラフのタイトル．#   WeSn              数字を書かせる軸の指定．#                     W（左）とS（下）が大文字なので，左と下に数字を書く．# -X9.0 -Y5.0 ## グラフを書かせる位置を，紙の左下からの距離(cm)で指定．# -X9.0でX方向に9cm，-Y5.0でY方向に5cmのところをグラフの原点にしている．# -V ## 今どんな処理をしているかを実況中継(verpose)．# エラーメッセージも吐いてくれるのでデバックに便利．# >! specplot1.ps ## psxyが吐き出すPostScriptコードをspecplot1.psというファイルに書き出す．# ちなみに >! の! は，既存のファイルに強制的に上書きするという意味．# Bourne shellの場合には >| になる．