Chinaunix

标题: AWK 如何判断列数值大小输出个数? [打印本页]

作者: clfsy    时间: 2015-09-25 17:55
标题: AWK 如何判断列数值大小输出个数?
有如下case,希望能得到高手的指点:

input file:
aaa -0.05 VIO
bbb -0.08 VIO
CCC -0.04 VIO
ddd -0.07 VIO

希望得到结果如下:
more -0.05 3
less  -0.05 1


请教如何用AWK实现?
谢谢先!!!

作者: jason680    时间: 2015-09-25 18:14
回复 1# clfsy

$ awk '
BEGIN{
  val=-0.05
}
{
  if($2>val)
    less++;
  else
    more++;
}
END{
  print "more",val,more;
  print "less",val,less;
}' FILE
more -0.05 3
less -0.05 1

作者: clfsy    时间: 2015-09-28 09:44
啊!多谢楼上解答,我其实是想 举例的,但估计没有把自己真正想要的描述清楚,下次一定注意。

学习了,确实。我一直想把这个判断的值进行一个累加,现在懂了。


再次多谢楼上。

作者: 聆雨淋夜    时间: 2015-10-01 16:09
awk '{sub("-","",$2);if($2>=0.05)a++;else b++}END{print "more -0.05 "a"\nless -0.05 "b}' file
作者: fh21_xuejinlian    时间: 2016-09-03 13:32
awk '{if($2>(-0.05))a["less"]++;else a["more"]++}END{for(i in a)print i" -0.0.5",a[i]}' file
作者: moperyblue    时间: 2016-09-03 13:59

  1. awk -v val=-0.05 '$2>val{++i;next}{++j}END{print "more",val,j RS "less",val,i}'
复制代码

作者: sunzhiguolu    时间: 2016-09-03 17:05
  1. perl -ane '{if($F[1]<=-0.05){$m++;next}$l++}END{print "more 0.05 $m\nless 0.05 $l"}' f
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2