作为一个基本的解决方案,考虑下面的代码:
[hamadhassan $] cat tri.awk
#!/usr/bin/gawk -f
BEGIN{
load_state=1;
}
$0=="$RESULT OF strength"{
# print "end of load state"
load_state=0;
}
load_state==1 && NF==6{
# print "storing "$0
lut[$1]=$0; # store line in look up table:
}
load_state==0 && NF==2{
if($2>0.0 && $2<1e-2){
if($1 in lut){
print lut[$1] > "Text2.txt";
}
}else{
if($1 in lut){
print lut[$1] > "Text1.txt";
}
}
}
[hamadhassan $]
这给你的样品输入:
[hamadhassan $] cat test.in
#start
#gatherData
*ELEMENT_SHELL
48709 1 50614 50616 50618 50613
48710 1 50613 50618 50608 50609
48711 1 50616 50617 50619 50618
48712 1 50618 50619 50607 50608
48715 1 50589 50590 50620 50615
48716 1 50615 50620 50616 50614
48717 1 50590 50591 50621 50620
48721 1 50623 50625 50626 50622
48722 1 50622 50626 50610 50611
48723 1 50625 50614 50613 50626
*END
$PresentData
$RESULT OF strength
48709 1.0267261e-002
48710 1.0721873e-002
48711 1.1930415e-002
48712 1.2186395e-002
48715 9.7443219e-003
48716 1.0036242e-002
48717 1.1186538e-002
48721 7.9333931e-003
48722 8.6850608e-003
48723 8.9872172e-003[hamadhassan $]
给出:
[hamadhassan $] ./tri.awk test.in
[hamadhassan $] cat Text2.txt
48715 1 50589 50590 50620 50615
48721 1 50623 50625 50626 50622
48722 1 50622 50626 50610 50611
48723 1 50625 50614 50613 50626
[hamadhassan $] cat Text1.txt
48709 1 50614 50616 50618 50613
48710 1 50613 50618 50608 50609
48711 1 50616 50617 50619 50618
48712 1 50618 50619 50607 50608
48716 1 50615 50620 50616 50614
48717 1 50590 50591 50621 50620
[hamadhassan $]
这是在CentOS 6用awk 3.1.7。