从制表符分隔的文件中删除特定行

从制表符分隔的文件中删除特定行

我有一个制表符分隔的文件,有 6 列,但有些行不是这样: 在此输入图像描述

我的文件中有很多这样的行,比如第七行。当我写作时

awk '{print $1"\t"$2"\t"$3"\t"$5"\t"$6}' filename

它仍然被保留。我如何摆脱这些条目?请帮忙。

答案1

您尝试的问题在于您只是将输入文件每一行的前 6 列打印到标准输出。如果任何给定行中的列数较少,awk则将缺少的列解释为“空”,因此第七行的输出实际上应该类似于

chr1 \t 290338 \t 290378 \t NS500455:80:HG7TMBGXB:$:13404:14651:1128 \t + \t \n

(为了可读性添加了周围的空格\t;注意末尾的“空”列)。

为了根据列数过滤掉格式错误的行,您可以尝试

awk -F'\t' -v OFS='\t' 'NF==6' file.txt > output.txt

它只会打印那些有 6 个字段(=列)的行。

相关内容