删除linux中某些字段的行

时间:2014-04-01 14:48:53

标签: linux awk sh tab-delimited

我有一个制表符分隔文件,其中包含20列和40行

missense 
nonsense
5' UTR
3' UTR

所以他们在第9列,并且我要求只有具有特定值的行保留在我的输出中但是在执行此操作时我没有得到输出 因此,如果该值是错误或无意义,请保留这些行,否则将其删除

awk -F"\t" '$9 == "missense" || $9 == "nonsense" ' input > output 

我也试过

awk -F"\t" '$9 == "missense"' || ' $9 == "nonsense" ' input > output 

所有答案都是0字节。

2 个答案:

答案 0 :(得分:0)

您的文件看起来与标签一起有空格。试试这个:

awk -F'[[:space:]]+' '$9 == "missense" || $9 == "nonsense"' input > output

答案 1 :(得分:0)

考虑使用匹配而不是相等:

awk -F"\t" '$9 ~ "missense" || $9 ~ "nonsense" ' input > output

如果您希望从输出中省略“this-missense-too”,这不是一个好的选择,但是否则会避免前导或尾随空格等问题。