-2

我们的文件已用 samtools 查看。我只需要抓住第二列,所以我做到了

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

您可能会猜到这不起作用.. 如果 awk 不是一个好选择,我应该如何查询以仅获取我的文件mybamfile.bam的第二列我愿意尝试其他任何方法!

4

2 回答 2

2

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

试试这个命令:

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

重新制表符作为分隔符:

如果未指定字段分隔符,AWK 将在“空白”(例如,空格和制表符)上-F'\t'拆分,使用确保它在制表符上拆分,而不是空格。这使得包含空格和制表符的文件有所不同。例如,

irene adler john moriarty
frank pempleton tim bayliss

假设每行的两个名称之间有一个制表符。如果制表符指定为字段分隔符,AWK 将看到每行4 个字段,第 2 列将包含adlerand pempleton。如果将制表指定为字段分隔符,AWK 将只看到每行2 个字段,第 2 列将由john moriatry和组成tim baylis

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

于 2012-06-18T04:11:00.357 回答
0

awk 默认将字段分隔符作为制表符。因此,如果字段分隔符确实是制表符,您的命令应该可以工作。也许你可以尝试:

./samtools view mybamfile.bam |cut -f2 -d'\t'
于 2012-06-18T05:53:48.493 回答