ヘッダーがある条件に基づくawk列

ヘッダーがある条件に基づくawk列

以下のテキストファイルがあります。

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

おすすめ記事