SSブログ

awk:特定の行の3列目以降だけを表示する

test.datファイルの3行目の2列目以降だけを表示
awk 'NR==3{{for(i=2;i<NF;i++)printf("%s ",$i) }print($NF)}' test.dat


awk '条件式{実行文A 実行文B}' ファイル名という構造。ここでは実行文Aはforブロックになるよう{ }で囲っている。NRはデータファイルのレコード数(行数)、NFはフィールド数(列数)

----
t0001 s x1 y1 x2 y2 .... xn yn
...
t1000 s x1 y1 x2 y2 .... xn yn
----


なるデータファイルdata.datから1000行目のデータについて

---
x1 y1
x2 y2
...
xn yn
---

なるデータファイルsnap.datを取り出す。
awk 'NR==1000{for(i=3;i<=NF-1;i=i+2){printf("%s %s\n",$i,$(i+1))}}' data.dat > snap.dat


もしくは、snap.awkというファイルを用意して、その中に
NR==1000{
 for(i=3;i<=NF-1;i=i+2){
   printf("%s %s\n",$i,$(i+1))
 }
}

と書いておいて
awk -f snap.awk < data.dat > snap.dat
などとする。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。