print $ i unles $ i小于10.使用awk或其他方式

时间:2013-08-22 09:07:54

标签: linux unix if-statement for-loop awk

我有一些数据,每行都有一系列值,如下所示:

49.01024263     49.13389087     49.38177387  (more numbers...)
42.71585143     43.48711477     44.25625756  (ect..)
43.18826160     43.15332580     43.13094893
30.69076014     28.74489096     26.85725970

最终数字达到的值小于10,此时我想删除该行中的所有剩余数字。

到目前为止,我有这个,但它返回了几个错误。

awk '{for (i=1;i++)do{if ($i > 10.0 ) print $i ; next ; else ; exit}}' input > output

我可能做错了什么? 有没有更好的方法来执行这项任务?

1 个答案:

答案 0 :(得分:5)

试试这一行:

awk '{for(i=1;i<=NF;i++)if($i>10)printf "%s ",$i;else break;print  ""}' file

用一个例子进行测试:

kent$  cat f
30 20 15 9 8
50 40 30 20 7 2000
100 200 300 400 5 444

kent$  awk '{for(i=1;i<=NF;i++)if($i>10)printf "%s ",$i;else break;print  ""}' f
30 20 15 
50 40 30 20 
100 200 300 400