我试图用基于染色体perl将.bed文件分成多个文件.例如,我的输入文件是example.bed:
chr1 12190 12227
chr1 12595 12721
chr2 876522 876688
chr2 887378 887521
...
Run Code Online (Sandbox Code Playgroud)
我的理想输出是两个.bed文件:
chr1.bed
chr1 12190 12227
chr1 12595 12721
Run Code Online (Sandbox Code Playgroud)
chr2.bed
chr2 876522 876688
chr2 887378 887521
Run Code Online (Sandbox Code Playgroud)
我知道使用awk这样做更容易,但我希望能够弄清楚如何使用perl脚本来做到这一点.
您可以维护文件句柄的哈希:
$ cat example.bed
chr1 12190 12227
chr1 12595 12721
chr2 876522 876688
chr2 887378 887521
$ perl -ane '
open $out{$F[0]}, ">", $F[0].".bed" unless $out{$F[0]};
print { $out{$F[0]} } $_;
' example.bed
$ cat chr1.bed
chr1 12190 12227
chr1 12595 12721
$ cat chr2.bed
chr2 876522 876688
chr2 887378 887521
Run Code Online (Sandbox Code Playgroud)
如果你有数百种不同的chromasomes,你可能会用完打开的文件句柄.在这种情况下,您必须打开每行的追加,打印和关闭.
| 归档时间: |
|
| 查看次数: |
632 次 |
| 最近记录: |