以下のテキストファイルがあります。
variable1
10 20 30
40 50 60
variable2
2 4 40
3 2 1
variable3
2 4 2
3 2 1
col3> 20の場合、出力は以下のヘッダー(変数1/2)の値に似ている必要があります。
variable1
10 20 30
40 50 60
variable2
2 4 40
一致するものがない場合は何も印刷されず、ヘッダも印刷しないでください。
ベストアンサー1
要件の私の解釈に基づいて
awk 'NF==1 { head=$0; printed=0; }
NF==3 && $3>20 {
if(!printed) {
printed=1;
if(firstdone)print ""; else firstdone=1;
print head
}
print
}' inputfile
またはより短い変形
awk 'NF==1 { head=$0; printed=0; }
NF==3 && $3>20 {
if(!printed++) {
if(firstdone++)print "";
print head
};
print
}' inputfile
awk 'NF==1 { head=$0; }
NF==3 && $3>20 {
if(head) {
if(firstdone++)print "";
print head;
head=""
};
print
}' inputfile
入力があります
variable1
10 20 30
40 50 60
variable2
2 4 40
3 2 1
variable3
10 10 10
5 5 5
variable4
1 1 1
2 2 21
3 3 3
出力は次のとおりです
variable1
10 20 30
40 50 60
variable2
2 4 40
variable4
2 2 21