次のような複雑なファイルがあります。
configuration {
step 58000
dt 2.00000000000000e+00
}
colvar {
name r
x 1.44869849559022e+01
}
0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00
0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00
hill {
step 1440
weight 1.00000000000000e-01
centers 1.47455750990065e+01 -1.69229380745887e+02
widths 1.25331413731550e+00 1.25331413731550e+00
}
hill {
step 1560
weight 1.00000000000000e-01
centers 1.47435719215456e+01 -1.70289673373179e+02
widths 1.25331413731550e+00 1.25331413731550e+00
}
hill {
step 1680
weight 1.00000000000000e-01
centers 1.47427376221419e+01 -1.68774767870364e+02
widths 1.25331413731550e+00 1.25331413731550e+00
}
このファイルからストライド、重量、幅を抽出し、タブ区切りを使用して新しい出力ファイルに書き込むことに興味があります。このように:-
#!step width1 width2 weight
1440 1.25331413731550e+00 1.25331413731550e+00 1.00000000000000e-01
私は次のように書かれたステップと重量を持っています。
awk ' b ~ /hill/ && a ~ /step/ && /weight/ {print v"\t"$2}{b=a; a=$0; v=$2}' input > output
幅を書くように拡張するにはどうすればよいですか?
ベストアンサー1
getline 関数を使用して、次の行を読み取ることができます。
$ awk -vOFS='\t' '/^hill {/{
getline; st=$2
getline; we=$2
getline; getline; wd1=$2; wd2=$3
print st, we, wd1, wd2
}' file
1440 1.00000000000000e-01 1.25331413731550e+00 1.25331413731550e+00
1560 1.00000000000000e-01 1.25331413731550e+00 1.25331413731550e+00
1680 1.00000000000000e-01 1.25331413731550e+00 1.25331413731550e+00