将列与awk进行比较时丢失数据

时间:2017-05-17 11:04:59

标签: bash awk

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

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

1 个答案:

答案 0 :(得分:2)

如果$ 3为1或0,它将等于其平方,打印到output1 / 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,上面是以下内容。