我的文件看起来像是:
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
答案 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