2017-05-17 33 views
-1

比较列时丢失数据我有一个文本文件和所有我想要做的就是比较第三列,看看它是否等于1或0,所以我只是简单地用使用awk

awk '$3 == 1 { print $0 }' input > output1 
awk '$3 == 0 { print $0 }' input > output2 

这是一个bash脚本的一部分,我敢肯定,这有一个更优雅的方法,但上面的代码应该完成工作,只是它不。 input有425行文本,输入中的第三列始终是1或0,因此output1 + output2中的行总数应该是425.但是我得到了417行。

下面是输入的样品(所有的这只是一列,并有425场这样的行):

out_first.dat 1 1 0.000000 265075.000000 6.000000e-01 1.005205e-03 9.000000e-01 9.000000e-01 2.889631e+00 -2.423452e+00 3.730018e+00 -1.532915e+00 
+0

首先从$ 3 == 1和$ 3 == 0删除“从它们中移除”,并向我们展示完整的示例Input_file。 – RavinderSingh13

+0

我将我的代码更改为$ 3 == 1和$ 3 == 0,输出只是一堆文本,但我会在上面添加一个例子,谢谢 – Dani

+1

其余行中可能有一些'space'。 – luoluo

回答

2

如果$ 3是1或0,它将等于它的平方,打印输出1/2。如果不打印给其他人进行检查。

awk `$3*$3==$3{print > "output"(2-$3); next} {print > "other"}' file 

如果$3*$3==$3是混乱的,变化到$3==0 || $3===1

为好奇$3==0 || $3===1可以写为$3*($3-1)==0从以上如下。

+0

这很聪明!几乎太聪明了 - 你的最后一行可能是理解的好敲门砖。 –