在数据集中应用AWK

时间:2017-06-19 17:30:24

标签: shell unix awk

我的文件看起来像是:

A 25 27 50
B 99 88 76

输出应该是

A: down
B: up

规则:如果每个numric值应该高于50,那么它的" up"或" down"

试过:

   awk '{ 
    split($2,arr,","); 
    if(arr[3] >= "50") 
    print $0 
  } ' file.txt

2 个答案:

答案 0 :(得分:2)

<=50

PS。检查严格少于50.如果不改为{{1}}。

答案 1 :(得分:0)

尝试:

awk '{for(i=2;i<=NF;i++){val+=$i>50?1:0}} val==(NF-1){print $1": up";next} {print $1": down"}'   Input_file

然后遍历一行的每个字段,然后创建一个名为val的变量,其值为1或0,并且自身也是附加值。一旦我们退出for循环,那么我正在检查val的值是否等于1小于字段数然后打印当前行的第一个值并串起来,接下来将跳过所有下一个语句。否则打印第一个字段,然后打印字符串。

编辑:现在也添加非单行形式的解决方案。

awk '{
        for(i=2;i<=NF;i++){
                                val+=$i>50?1:0
                          }
     }
        val==(NF-1){
                        print $1": up";
                        next
                   }
                   {
                        print $1": down"
                   }
    '   Input_file