Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用AWK按两种条件搜索和打印_Awk_Conditional Statements_Tac - Fatal编程技术网

使用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。它将尽快退出代码,不会进一步处理任何行,这将节省我们的时间,我使用它,因为你只想打印第一次出现。