使用 AWK 按两个条件搜索和打印

Search and Print by Two Conditions using AWK

我有这个文件:

         - - - Results from analysis of weight - - -
 Akaike Information Criterion   307019.66 (assuming 2 parameters).
 Bayesian Information Criterion 307036.93

                 Approximate stratum variance decomposition
 Stratum     Degrees-Freedom   Variance      Component Coefficients
 id                 39892.82    490.360         0.7     0.6     1.0
 damid                  0.00    0.00000         0.0     0.0     1.0
 Residual Variance   1546.46    320.979         0.0     0.0     1.0

 Model_Term                             Gamma         Sigma   Sigma/SE   % C
 id                     NRM_V 17633  0.18969       13.480       4.22   0 P
 damid                  NRM_V 17633  0.07644       13.845       2.90   0 P
 ide(damid)             IDV_V 17633  0.00000       32.0979      1.00   0 S
 Residual               SCA_V 12459  1.0000        320.979     27.81   0 P

我想在 id 上打印 Sigma 的值,注意文件上有两个 id,所以我使用了基于 [=16= 的条件] 也是。

我试过这段代码:

tac myfile | awk '(/id/ && /NRM_V/){print }'

但打印的结果是:

13.480
13.845

我只需要第一个

能否请您尝试以下,我在这里添加了awkexit功能,这将帮助我们在第一次出现条件时尽快退出代码,这将帮助我们节省时间同样,因为它不再阅读整个 Input_file.

awk '(/id/ && /NRM_V/){print ;exit}' Input_file

OR 列:

awk '(=="id" && =="NRM_V"){print ;exit}' Input_file


如果您想从最后一行到第一行读取文件并获取其第一个值,请尝试:

tac Input_file | awk '(/id/ && /NRM_V/){print ;exit}'

OR 列比较:

tac Input_file | awk '(=="id" && =="NRM_V"){print ;exit}'

问题是 /id/ 也匹配 damid。仅当第一个字段为 id 且第二个字段为 NRM_V 时,您才可以使用以下命令打印 Sigma 值:

awk '=="id" && =="NRM_V"{ print  }' myfile