使用AWK按两种条件搜索和打印
我有这个档案:使用AWK按两种条件搜索和打印,awk,conditional-statements,tac,Awk,Conditional Statements,Tac,我有这个档案: - - - Results from analysis of weight - - - Akaike Information Criterion 307019.66 (assuming 2 parameters). Bayesian Information Criterion 307036.93 Approximate stratum variance decomposition Stratum Degree
- - - 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,所以我也使用了基于NRM_V的条件
我尝试了以下代码:
tac myfile | awk '(/id/ && /NRM_V/){print $5}'
但结果是:
13.480
13.845
我只需要第一个请尝试以下内容,我在这里添加了awk的退出功能,它将帮助我们在出现第一个条件时尽快退出代码,这也将帮助我们节省时间,因为它不再读取整个输入文件
awk '(/id/ && /NRM_V/){print $5;exit}' Input_file
或使用列:
awk '($1=="id" && $2=="NRM_V"){print $5;exit}' Input_file
若要从最后一行向第一行读取文件并获取其第一个值,请尝试:
tac Input_file | awk '(/id/ && /NRM_V/){print $5;exit}'
或使用列比较:
tac Input_file | awk '($1=="id" && $2=="NRM_V"){print $5;exit}'
请您尝试以下内容,我在这里添加了awk的退出功能,这将帮助我们在第一次出现条件时尽快退出代码,这也将帮助我们节省时间,因为它不再读取整个输入文件
awk '(/id/ && /NRM_V/){print $5;exit}' Input_file
或使用列:
awk '($1=="id" && $2=="NRM_V"){print $5;exit}' Input_file
若要从最后一行向第一行读取文件并获取其第一个值,请尝试:
tac Input_file | awk '(/id/ && /NRM_V/){print $5;exit}'
或使用列比较:
tac Input_file | awk '($1=="id" && $2=="NRM_V"){print $5;exit}'
问题是/id/也与damid匹配。仅当第一个字段为id,第二个字段为NRM_V时,您可以使用以下内容打印Sigma值:
问题是/id/也与damid匹配。仅当第一个字段为id,第二个字段为NRM_V时,您可以使用以下内容打印Sigma值:
tac从最后一行到第一行读取输入_文件,您真的想这样读取文件吗?因为它可能会更改输出中的第一行,然后.tac从最后一行向第一行读取输入_文件,所以确实要这样读取文件吗?因为它可能会改变输出中的第一行。@CuriousG。它将尽快从代码中退出,不会进一步处理任何节省时间的行,我使用它是因为您只想打印第一次出现的内容。@CuriousG。它将尽快退出代码,不会进一步处理任何行,这将节省我们的时间,我使用它,因为你只想打印第一次出现。