我们的文件已用 samtools 查看。我只需要抓住第二列,所以我做到了
./samtools view mybamfile.bam | awk '{ print $2 }' > output.txt
您可能会猜到这不起作用.. 如果 awk 不是一个好选择,我应该如何查询以仅获取我的文件mybamfile.bam的第二列我愿意尝试其他任何方法!
我相信 的输出./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 列将包含adler
and pempleton
。如果将制表符指定为字段分隔符,AWK 将只看到每行2 个字段,第 2 列将由john moriatry
和组成tim baylis
。
在 Linux 下使用 GNU Awk 3.1.6 进行测试。
awk 默认将字段分隔符作为制表符。因此,如果字段分隔符确实是制表符,您的命令应该可以工作。也许你可以尝试:
./samtools view mybamfile.bam |cut -f2 -d'\t'