使用 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
我只需要第一个
能否请您尝试以下,我在这里添加了awk
的exit
功能,这将帮助我们在第一次出现条件时尽快退出代码,这将帮助我们节省时间同样,因为它不再阅读整个 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
我有这个文件:
- - - 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
我只需要第一个
能否请您尝试以下,我在这里添加了awk
的exit
功能,这将帮助我们在第一次出现条件时尽快退出代码,这将帮助我们节省时间同样,因为它不再阅读整个 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