Fuyuki Hirose's HP

awk

行数指定

    awk 'NR==1 {print $1, $2}' $data | ...

変数使用

    awk -v a=$a0 -v b=$b0 '$1>=a && $1<=b {print $2, $3}' $data | ...

2つのファイルを横につなげる

    ---
    #!/bin/sh
    data1=./test1.in
    data2=./test2.in
    data3=./test3.out
    cat $data1 $data2 | awk '
	BEGIN {
	i=1
	}
	{
	x[i]=$0
	i++
	}
	END{
	i--
	for(j=1 ; j<=i/2 ; j++){
	print x[j], x[j+i/2]
	}
	}
    ' > $data3
    ---

5つのファイルを横につなげる.↑のENDを書き換えれば良い.

    ---
	END{
	i--
	for(j=1 ; j<=i/5 ; j++){
	print x[j], x[j+i/5], x[j+i*2/5], x[j+i*3/5], x[j+i*4/5]
	}
	}
    ---

フィールド区切り文字を指定する

    awk -F',' '{print $1, $2}' $data | ...

「-F」オプションで,区切り文字を指定できる.この場合はコンマ(,)を指定.

cut

文字列を切り出す.

  $ * | cut -f9

「-f」オプションをつけることで,フィールドを指定できる.この場合は9フィールド目を抽出.

  $ * | cut -c2-10

「-c」オプションをつけることで,行頭からの文字数を指定できる.この場合は2-10文字目を抽出.

GMT

複数領域を指定の色で塗る

    psxy $proje $range -C$color -m -L -P < $psfile
    > -Z数値1
    経度1 緯度1
    経度2 緯度2
    経度3 緯度3
    経度4 緯度4
    > -Z数値2
    経度5 緯度5
    経度6 緯度6
    経度7 緯度7
    経度8 緯度8
    > -Z数値3
    ・
    ・
    ・
    END

「-Z」コマンドで指定した数値に対応した色が領域内(その次の行から指定)に塗られる.このとき,「>」と「-Z」の間に空白が必要.


2点間の距離を取得

    project -C139.0/34.0 -E139.2/34.2 -G1 -Q

「-Q」を付けると単位はkm.外すと単位は度.
「-G」は出力間隔.


grdデータからコンター毎のアスキーデータを取得

    grdcontour data.grd $proje $range -C10 -A10 -D -O -K >> $psfile

「-D」オプションをつけることで,grdデータからコンター毎のアスキーデータ(contour_0_0.xyz等)が出力される.


カラースケール

    psscale -C$color -D5/-4/3/0.15 -L -Ba1g0.5/:"days": -O -K >> $psfile

「-L」オプションをつけることで,数値によらず等間隔になる.

「-B」オプションをつけることで,目盛り数字(a)と目盛り線(g)を設定できる.


配置間隔を指定

  grdcontour $grd $proje $range -C10 -A10 -G5c -W5t20_10:0/255/127/0 -m -K -O >> $psfile

「-G」オプションをつけることで,グリッド値の配置間隔を指定できる.例は5 cm間隔.


陰影を付ける

  gradient=gradient.grd
  grdgradient $grd -G$gradient -A315 -Ne0.6

「-G」で傾斜出力ファイルを指定.
「-A」オプションは光源.0が北を指し,時計回り.例の315は北西に光源を置いたもの.
「-Ne0.6」オプションを付けないと変になる.数値は適宜調整すれば良いが,マニュアルによれば「0.6」がお薦めとのこと.

  grdimage $grd $range $proje -C$cptfile -I$gradient -K > $psfile

上記で作った傾斜ファイルを「-I」で指定し,描画する.

matlab

起動

「matlab」とコマンドを入れると,

  "License Manager Error -15.
   Cannot connect to license server..."とエラー.

「/usr/local/matlab/etc/lmstart」でライセンスマネジャーを立ち上げればOK.


ZMAPで推定したデータの抽出

行列「bvg」には,11個のデータ(bv magco x y rd bv2 stan2 av stan prf av2)が並んでいる.

  --重み付最小二乗法(x, y, bv, magco, av, rd)
   dat = [bvg(:,3) bvg(:,4) bvg(:,1) bvg(:,2) bvg(:,8) bvg(:,5)]

  --最尤法(x, y, bv2, magco, av2, rd)
   dat = [bvg(:,3) bvg(:,4) bvg(:,6) bvg(:,2) bvg(:,11) bvg(:,5)]

  save outfile.out dat -ascii

perl

Windowsの改行コード「^M」を削除[CR+LF(0x0d, 0x0a)→LF (0x0a)]する.

  $ perl -pe 's/\015\012/\012/g' input.file > output.file

sed

文字列「ABC」が終りにある行を全削除

  $ sed '/ABC$/d' input.file

(先頭なら↑のABC$を^ABCに変更)


文字列「,」を全て空白にする

  $ sed 's/,/ /g' input.file

ここで,sは置換コマンド,最後にgを付けた場合は置換条件に当てはまるすべての文字列が置換される.

tac(catコマンドの逆の意)

行を逆に出力する

  $ tac file_name

uniq

ユニークな行を表示

  $ uniq -u file_name