根据列值过滤文本文件

Filter text file based on column value

我有一个包含 26 列的文本文件,只有当第 22 列的值为“0”、“1”、“2”或“3”(0-5 中的值)时才需要过滤行。

如果第 22 列的值为“0”、“1”、“2”或“3”(在下面突出显示),则删除小于 10 和大于 100 的所有内容(基于第 5 列)并删除小于5.0(此列有小数点)(基于第 13 列)。

我不确定如何插入仅当第 22 列具有以下值 1 到 3 并保留其他行(即具有值 4 和 5)的条件时才执行以下操作,因为它在输出中文件

awk -F "\t"  'NR==1; NR>1 {if ( > 10 && <100 && >5.0) print [=10=]}' input.txt > output.txt

我的输入文件如下

Column1 ... Column5 ... Column13 .. Column22
ID1 a1 5 0 5
ID2 a2 10 1.2 0
ID3 a3 4 5.6 1
ID4 a4 300 2.6 2
ID5 a5 40 32 0
ID6 a6 200 4.6 3
ID7 a7 200 4.5 5
ID8 a8 3456 4.9 4

我想要的输出是

Column1 Column5 Column13 Column22

ID1 a1 5 0 5

ID5 a5 40 32 0

ID7 a7 200 4.5 5

ID8 a8 3456 4.9 4

感谢任何帮助。谢谢

另一种选择是...

awk -F'\t' '{p=0<= && <=3; q=10< && <100 && 5<} NR==1 || q || !p ' file

您希望仅当 介于 0 和 3 (p) 之间时应用其他条件 (q)。

如果您有可测试的输入输出,它可能已经过验证。