Bash 比较文件的连续列并确定是否有大于80的列
我有一个SQL查询输出文件,如下所示:Bash 比较文件的连续列并确定是否有大于80的列,bash,shell,awk,Bash,Shell,Awk,我有一个SQL查询输出文件,如下所示: DG_DATA 9 DG_FRA 0 OCR002 3 OCR 3 我使用以下方法来提取带有数字的列 awk '{for(x=1;x<=NF;++x)if(x % 2 == 0)printf $x "\t"}' 但我需要一些帮助来比较所有整数,如果任何整数大于80,则打印“临界值”。这是一种方法: { n=split($0, arr, " "); i=2; while(i<=n){ str=str a
DG_DATA 9 DG_FRA 0 OCR002 3 OCR 3
我使用以下方法来提取带有数字的列
awk '{for(x=1;x<=NF;++x)if(x % 2 == 0)printf $x "\t"}'
但我需要一些帮助来比较所有整数,如果任何整数大于80,则打印“临界值”。这是一种方法:
{
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";
}
}
{
n=拆分($0,arr,“”);
i=2;
而(i 80){
f=1
};
i+=2;
}
打印str;
如果(f){
打印“关键”;
}
}
示例 所有值正常:
[llamazing@pc ~]$ 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
[llamazing@pc~]$echo“DG_数据9 DG_FRA 0 OCR002 3 OCR 3”| awk'{n=split($0,a,”);i=2;而(i 80){f=1};i+=2;}print str;如果(f){print“CRITICAL”;}}'
9 0 3 3
带有关键信息:
[llamazing@pc ~]$ 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
[llamazing@pc~]$echo“DG_数据9 DG_FRA 81 OCR002 3 OCR 3”| awk'{n=split($0,a,”);i=2;而(i 80){f=1};i+=2;}print str;如果(f){print“CRITICAL”;}}'
9 81 3 3
批评的
这是一种方法:
{
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";
}
}
{
n=拆分($0,arr,“”);
i=2;
而(i 80){
f=1
};
i+=2;
}
打印str;
如果(f){
打印“关键”;
}
}
示例 所有值正常:
[llamazing@pc ~]$ 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
[llamazing@pc~]$echo“DG_数据9 DG_FRA 0 OCR002 3 OCR 3”| awk'{n=split($0,a,”);i=2;而(i 80){f=1};i+=2;}print str;如果(f){print“CRITICAL”;}}'
9 0 3 3
带有关键信息:
[llamazing@pc ~]$ 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
[llamazing@pc~]$echo“DG_数据9 DG_FRA 81 OCR002 3 OCR 3”| awk'{n=split($0,a,”);i=2;而(i 80){f=1};i+=2;}print str;如果(f){print“CRITICAL”;}}'
9 81 3 3
批评的
请注意,显示的数字中没有一个是该术语正常意义下的整数。还有,为什么不干脆跳过你感兴趣的领域呢for(x=2;x)您可以控制生成输出的SQL吗?请注意,显示的数字中没有一个是术语正常意义下的整数。另外,为什么不简单地跳过您感兴趣的字段呢?for(x=2;x)您可以控制生成输出的SQL吗?