我有一个tsv文件,在第22列中,我想删除所有没有100.0%作为数值常量的行。其他值都是0.0%
我试过:

cat Product_Adaption.tsv | awk '$22 != /100.0%/' | cut -f1,22 | awk -F '\t' '{print $0, "Missing "}' | head

它仍然打印所有100.0%的值,而不是0.0%的值
如何仅获取第22列中具有0.0%的行的grep
Column 1    Column 22
26483335    0.00%
26483335    0.00%
6522321 100.00%
10058064    100.00%
26483335    0.00%
1061749 100.00%
26483335    100.00%
1098801 0.00%
83895846    0.00%
10058124    100.00%
26483335    0.00%
90872300    100.00%
9646863 100.00%
26483335    100.00%
26483335    0.00%
26483335    100.00%

当我使用
cat Product_Adaption.tsv |awk '$22 != /^100\.0%$/'| cut -f1,22 | awk -F '\t' '{print $0, "Missing"}' | head

我把这个作为输出
26483335        0.0% Missing
26483335        0.0% Missing
6522321 100.0% Missing
10058064        100.0% Missing
26483335        0.0% Missing
1061749 100.0% Missing
26483335        100.0% Missing
1098801 0.0% Missing
83895846        0.0% Missing

regex似乎不起作用?

最佳答案

目前还不清楚为什么你有这么多的命令和管道,并与ReXEP分隔符混合字符串操作。

awk -F'\t' '$22 == "0.00%"{print $1, $22, "Missing"}' Product_Adaption.tsv

有时您在问题中显示0.00%或其他您在问题中显示0.0%的内容,这样就可以确定输入文件真正包含的内容,但只需使用上面脚本中正确的内容。

08-05 10:31