2015-11-23 29 views
1

我有一個SQL查詢的輸出像這樣的文件:比較文件的連續列,並確定是否有任何大於80

DG_DATA 9 DG_FRA 0 OCR002 3 OCR 3 

我用數字

以下爲摘錄列
awk '{for(x=1;x<=NF;++x)if(x % 2 == 0)printf $x "\t"}' 

,我得到這個格式的輸出:

9 0 3 3 

,但我需要一些幫助來比較所有的tegers並打印 「關鍵」 如果任何整數大於80

+0

請注意,所顯示的數字都不是該術語正常含義下的整數。另外,爲什麼不簡單地跨過你感興趣的領域? 'for(x = 2; x <= NF; x + = 2)printf $ x「\ t」'?不要忘記在最後添加一個換行符:'print「」'。 –

+0

您是否對生成輸出的SQL有任何控制權? – chepner

回答

0

這是一個辦法做到這一點:

{ 
    n=split($0, arr, " "); 
    i=2; 
    while(i<=n){ 
     str=str arr[i]"\t"; 
     if(arr[i] > 80){ 
      f=1 
     }; 
     i+=2; 
    } 
    print str; 
    if(f){ 
     print "CRITICAL"; 
    } 
} 

確定所有的值:

[[email protected] ~]$ echo "DG_DATA 9 DG_FRA 0 OCR002 3 OCR 3" | awk '{n=split($0, a, " ");i=2;while(i<=n){str=str a[i]"\t";if(a[i] > 80){f=1};i+=2;}print str;if(f){print "CRITICAL";}}' 
9  0  3  3 

關鍵信息:

[[email protected] ~]$ echo "DG_DATA 9 DG_FRA 81 OCR002 3 OCR 3" | awk '{n=split($0, a, " ");i=2;while(i<=n){str=str a[i]"\t";if(a[i] > 80){f=1};i+=2;}print str;if(f){print "CRITICAL";}}' 
9  81  3  3 
CRITICAL 
相關問題