Linux 打印$i除非$i小于10。使用awk或其他方式
我有一些数据,每行上都有一系列值,如下所示:Linux 打印$i除非$i小于10。使用awk或其他方式,linux,unix,if-statement,for-loop,awk,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的值,此时我想删除该行
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
我可能做错了什么?
执行此任务有更好的方法吗?试试这句话:
awk '{for(i=1;i<=NF;i++)if($i>10)printf "%s ",$i;else break;print ""}' file
awk'{for(i=1;i10)printf“%s”,$i;else break;print”“}文件
用一个例子进行测试:
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
kent$f类
30 20 15 9 8
50 40 30 20 7 2000
100 200 300 400 5 444
kent$awk'{for(i=1;i10)printf“%s”,$i;else break;print”“}f
30 20 15
50 40 30 20
100 200 300 400
试试这句话:
awk '{for(i=1;i<=NF;i++)if($i>10)printf "%s ",$i;else break;print ""}' file
awk'{for(i=1;i10)printf“%s”,$i;else break;print”“}文件
用一个例子进行测试:
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
kent$f类
30 20 15 9 8
50 40 30 20 7 2000
100 200 300 400 5 444
kent$awk'{for(i=1;i10)printf“%s”,$i;else break;print”“}f
30 20 15
50 40 30 20
100 200 300 400
next time better给出了一些有意义的输入示例。例如,您的输入没有任何小于10的数字。此外,预期的输出也会帮助您更快地得到答案。下次better会给出一些输入示例,这很有意义。例如,您的输入没有任何小于10的数字。另外,预期的输出也会帮助您更快地得到答案。您能告诉我最终打印“”的目的吗?@Mari删除打印语句,然后重试该命令,你会看到的。我知道你从OPs代码中得到了$I>10
,但他说代码不起作用,他说当字段小于10
而不是小于或等于10
时,他希望停止。我怀疑他没有测试edge案例,这显然应该是他的样本输入和预期输出的一部分。此外,您的代码将在每行添加一个尾随空格,这通常是不需要的。请尝试以下操作:{for(i=1;i能否请您告诉我最终打印的目的是什么?”?@Mari删除print语句,然后再次尝试该命令,您会看到。我知道您从OPs代码中获得了$I>10
,但他说该代码不起作用,他说他希望在字段小于10
而不是小于或等于10
时停止。我怀疑他没有测试边缘案例,显然应该是已成为其示例输入和预期输出的一部分。此外,您的代码将在每行中添加一个尾随空格,这通常是不需要的和不必要的。请尝试以下操作:{for(i=1;i