这个被多次询问,但我仍然无法解决。 我文件的一部分如下:
GKKRBSF:: ewrat= 0.00000 (<1 searchk, >1 searche)
dirat= 0.00000 (Direct Summation ratio)
nhat,betah= 0.1000D+01 0.0000D+00 0.1000D+01 0.10000D+00
nhat,betah= 0.1000D+01 0.0000D+00 0.1000D+01 0.10000D+00
nhat,betah= 0.1000D+01 0.0000D+00 0.1000D+01 0.10000D+01
nhat,betah= 0.1000D+01 0.0000D+00 0.1000D+01 0.10000D+01
nhat,betah= 0.1000D+01 0.0000D+00 0.1000D+01 0.10000D+00
这是介于文件之间的某个地方。我必须得到nhat,betah
的第一个和第n个(在这个特定示例中为第3个)匹配的$ 5。
对于第一行,我可以很容易地做到:
var_M=`awk '/nhat,betah=/{print $5;exit}' filename`
但是,如何获得第3行并退出? 我试着从this主题开始:
var_M=`awk '/nhat,betah=/{j++}j=3{print $5;exit}' filename`
这是给出文件第3行的第5列,而不匹配模式。 当然我错过了一些东西。 有什么帮助吗?
答案 0 :(得分:4)
您可以跟踪它出现的次数:
$ awk '/nhat,betah=/{i++; if (i==3) {print $5; exit}}' file
0.30000D+01
你几乎拥有它,只是以适当的方式将条件置于其中:
这
var_M=$(awk '/nhat,betah=/{j++} j=3{print $5;exit}' filename)
^
到
var_M=$(awk '/nhat,betah=/{j++} j==3{print $5;exit}' filename)
^^
注意我将最后一列更改为0.NumberOfLine
,以便更清楚地输出哪一行:
GKKRBSF:: ewrat= 0.00000 (<1 searchk, >1 searche)
dirat= 0.00000 (Direct Summation ratio)
nhat,betah= 0.1000D+01 0.0000D+00 0.1000D+01 0.10000D+00
nhat,betah= 0.1000D+01 0.0000D+00 0.1000D+01 0.20000D+00
nhat,betah= 0.1000D+01 0.0000D+00 0.1000D+01 0.30000D+01
nhat,betah= 0.1000D+01 0.0000D+00 0.1000D+01 0.40000D+01
nhat,betah= 0.1000D+01 0.0000D+00 0.1000D+01 0.50000D+00