Unix 在不同线路上使用带条件的awk

Unix 在不同线路上使用带条件的awk,unix,awk,Unix,Awk,如果在带有“AA”的行后面有两行,那么该行的$3大于80(这里是89,所以是的),我想用“AA”和“CC”对该行进行分类 我试过这个: gawk '{for (I=1;I<NF;I++) if ($I == "AA" && $I+2 > 80) print $I,$I+2}' ~/Desktop/toto.txt 谢谢你的帮助 awk -F'[[ ]+' '$2=="AA"{prev=$0; nr=NR+2} (NR==nr)

如果在带有“AA”的行后面有两行,那么该行的$3大于80(这里是89,所以是的),我想用“AA”和“CC”对该行进行分类

我试过这个:

gawk '{for (I=1;I<NF;I++) if ($I == "AA" && $I+2 > 80) print $I,$I+2}' ~/Desktop/toto.txt
谢谢你的帮助

awk -F'[[ ]+' '$2=="AA"{prev=$0; nr=NR+2} (NR==nr) && ($3 >80){print prev ORS $0}' file
aaaaaaaa AA [15]
cccccccc CC [89]
或:

有关
c&&的说明,请参阅--c
和相关示例

或:

有关
c&&的说明,请参阅--c
和相关示例。

这也应该适用于:

awk'{val=$3;gsub(/[^0-9]+/,“”,val)}prno&NR==prno+2&&val>80{print p ORS$0}$2==AA{prno=NR;p=$0}文件
AAAAA[15]
中交[89]
这也应该有效:

awk'{val=$3;gsub(/[^0-9]+/,“”,val)}prno&NR==prno+2&&val>80{print p ORS$0}$2==AA{prno=NR;p=$0}文件
AAAAA[15]
中交[89]

稍微不同的方法:

awk-F'[]]+'
$2==“AA”{
aa=$0
getline;getline
如果($3>80){
打印aa
打印
}
}
"档案"

稍微不同的方法:

awk-F'[]]+'
$2==“AA”{
aa=$0
getline;getline
如果($3>80){
打印aa
打印
}
}
"档案"

致读者:在本回答之后阅读致读者:在本回答之后阅读当我尝试$3>100时,它不起作用,你知道为什么吗?如果我想添加第二行的$2以B开头的条件,你知道该怎么做吗?谢谢1)不-你的数据一定与你发布的有所不同,数字100对80没有什么神奇之处。2)
$2~/^B/
。3) 不客气!可能是因为有时数字是[56]或[1]而不是[56]或[1]输入中的任何差异都不会影响计算。你必须发布一些脚本不适用的实际数据,我才能帮助你调试问题。当我尝试$3>100时,它不起作用,你知道为什么吗?如果我想添加第二行的$2以B开头的条件,你知道该怎么做吗?谢谢1)不-你的数据一定与你发布的有所不同,数字100对80没有什么神奇之处。2)
$2~/^B/
。3) 不客气!可能是因为有时数字是[56]或[1]而不是[56]或[1]输入中的任何差异都不会影响计算。您必须发布一些脚本不适用的实际数据,以便我能够帮助您调试问题。
aaaaaaaa AA [15]
cccccccc CC [89]
awk -F'[[ ]+' '$2=="AA"{prev=$0; nr=NR+2} (NR==nr) && ($3 >80){print prev ORS $0}' file
aaaaaaaa AA [15]
cccccccc CC [89]
$ awk -F'[[ ]+' '$2=="AA"{prev=$0; c=3} (c&&!--c) && ($3>80){print prev ORS $0}' file
aaaaaaaa AA [15]
cccccccc CC [89]