需要在输出文件中打印文件的第二列

时间:2012-06-18 03:27:06

标签: string unix awk

我们的文件已与samtools一起查看。我只需抓住第二列,所以我做了

./samtools view mybamfile.bam | awk '{ print $2 }' > output.txt

你会猜测那不起作用..如果awk不是一个好的选择,我应该如何查询只获取第二列我的文件 mybamfile.bam 我愿意尝试其他任何东西!

2 个答案:

答案 0 :(得分:2)

我认为./samtools view view mybamfile.bam的输出是制表符分隔的,因此应将AWK的字段分隔符设置为制表符(-F'\t')以获取第二列。

尝试此命令:

 ./samtools view mybamfile.bam | awk -F'\t' '{ print $2 }' > output.txt

选项卡作为分隔符:

如果未指定字段分隔符,AWK将在“空格”(例如空格和制表符)上拆分,使用-F'\t'确保它仅在选项卡上分割 ,而不是空格。这会在包含空格和制表符的文件中产生差异。 E.g,

irene adler john moriarty
frank pempleton tim bayliss

假设每行上的两个名称之间有一个标签。如果标签字符指定为字段分隔符,AWK将在每行中看到 4 字段,第2列将包含adlerpempleton。如果将 标签指定为字段分隔符,则AWK只会在每一行上看到 2 字段,而第2列将包含john moriatrytim baylis

在Linux下使用GNU Awk 3.1.6进行测试。

答案 1 :(得分:0)

awk默认将字段分隔符作为tab.so如果字段分隔符确实是一个选项卡,那么你的命令应该可以工作。 也许你可以试试:

./samtools view mybamfile.bam |cut -f2 -d'\t'
相关问题