如下题:
文本:test.log
X001 100
X002 121
X003 12
X004 13
X005 14
X006 23
X007 344
X008 1234
X009 1
X010 10
X011 123
其中第二列为数值,以第二列数值之和为200分段,如下:
X001 X002 221 ---------前两行之和大于200,打印第一列开始结束值
X003 X007 406 ---------第3,4,5,6,7行的第二列值和大于200,打印第一列开始结束值
X008 X008 1234 ---------第8行的第二列值本身已大于200,打印第一列开始结束值
X009 X011 134 ---------文本结束,虽不足200值,仍打印第一列开始结束值。
各位高手,有没有更优更简单的实现方法?
引用
(黑哥)
的解决方案:
awk 'f{t+=$2}!f{printf $1;f=!f;t=$2}t>200{printf "\t%s\t%s\n", $1,t;f=!f}END{if(f)printf "\t%s\t%s\n",$1,t}' urfile
原帖网址:
阅读(1492) | 评论(0) | 转发(0) |