Awk 基于多列中的值消除行

Awk 基于多列中的值消除行,awk,sed,filter,Awk,Sed,Filter,我试图从一个大表中删除行,但条件是一列有一个值,另一列有其他值 到目前为止,我一直在尝试这一点,但我想我没有正确地结合awk awk '$11 !="1"'| awk '$20==2 || $20==3' infile.txt >out.txt 代码可能太简单了,但无论如何都应该可以工作..还是不行 谢谢 编辑: 这就是这张桌子的样子 5306083 TGATCAATCTCATAAC[A/C]AAAAAAAAA consensus_24 211 1 species 0

我试图从一个大表中删除行,但条件是一列有一个值,另一列有其他值

到目前为止,我一直在尝试这一点,但我想我没有正确地结合awk

awk '$11 !="1"'| awk '$20==2 || $20==3' infile.txt >out.txt
代码可能太简单了,但无论如何都应该可以工作..还是不行

谢谢

编辑:

这就是这张桌子的样子

    5306083 TGATCAATCTCATAAC[A/C]AAAAAAAAA  consensus_24    211 1   species 0   0   0   T   0   7   T   recommended 0.708   F   0   -100    T   recommended
    5193751 AGTAGCTTGCGCGGA[C/T]GGGGGGGGG   consensus_32    227 1   species 0   0   0   T   1   1   T   not_recommended 0.75    F   0   -100    T   not_recommended
    5193254 TAAAAAAAAAAAAAA[G/T]ATTCATCC    consensus_26    192 1   species 0   0   0   T   1   0   T   not_recommended 0.726   F   0   -100    T   neutral
所以,如果我根据$11=1和$20进行筛选,需要“中性”或“不推荐”,我会得到这个结果

       5306083  TGATCAATCTCATAAC[A/C]AAAAAAAAA  consensus_24    211 1   species 0   0   0   T   0   7   T   recommended 0.708   F   0   -100    T   recommended
应该这样做

更新:根据给定的输入,在这种情况下,输出中应该有两行

$ awk '$11==1 && ($20=="not_recommended" || $20=="neutral")' file

5193751 AGTAGCTTGCGCGGA[C/T]GGGGGGGGG   consensus_32    227 1   species 0   0   0   T   1   1   T   not_recommended 0.75    F   0   -100    T   not_recommended
5193254 TAAAAAAAAAAAAAA[G/T]ATTCATCC    consensus_26    192 1   species 0   0   0   T   1   0   T   not_recommended 0.726   F   0   -100    T   neutral
但我猜,你的意思是你想否定这一点,这与你原来的帖子不同

$ awk '$11!=1 || ($20!="not_recommended" && $20!="neutral")' file

5306083 TGATCAATCTCATAAC[A/C]AAAAAAAAA  consensus_24    211 1   species 0   0   0   T   0   7   T   recommended 0.708   F   0   -100    T   recommended

您肯定不会删除文件中的行,我认为在这里您将保持文件中的行不变,并将一些行写入文件外。您的第一个awk缺少文件输入,也不需要调用awk两次。请看下面的答案。尽快获得阿诺德·罗宾斯的《有效的Awk编程》第四版!在这种情况下。您可以使用正则表达式稍微简化<代码>$20==2 | |$20==3可以写
$20~/^[23]$/
。不为我工作。。输出文件是空的。我们的想法是删除这些行,并在不将它们作为输出的情况下获取表。请发布一个示例输入和预期输出,以便可以测试脚本。嗯,我明白你的意思了。。我不知道我必须加上这个!向他们所有人表达。谢谢。它现在似乎起作用了
$ awk '$11!=1 || ($20!="not_recommended" && $20!="neutral")' file

5306083 TGATCAATCTCATAAC[A/C]AAAAAAAAA  consensus_24    211 1   species 0   0   0   T   0   7   T   recommended 0.708   F   0   -100    T   recommended