我有一个包含列的文件,如下所示:
row1 0.15 0.03
row2 0.06 0.028
row3 0.05 0.05
row4
row5 0.09
row6
如果col2 = col3中的值,我想通过删除行来过滤文件。这是一个安静的简单条件,写'$ 2 = $ 3'。但是,当应用$ 2 = $ 3条件时,col2和col3中具有空值的行也会被过滤。我希望这个条件只在有值的行上运行。示例输出如下所示。仅过滤第3行。即使也符合条件,它也没有任何整数值。
row1 0.15 0.03
row2 0.06 0.028
row4
row5 0.09
row6
我知道这很简单,但是当我尝试以下方式并且还有其他一些方法时它不起作用,它打印原始文件。
awk -F '\t' '$1!="" && $2!= "" {$1==$2}1' OFS="\t"
答案 0 :(得分:3)
使用awk:
awk -F '\t' -v OFS='\t' '$2 == "" || $2 != $3' filename
$2 == "" || $2 != $3
只是一个条件,因此如果为真,则执行默认操作(打印)。$3 == ""
进行明确检查,因为在这种情况下$2 == ""
或$2 != $3
为真。