我有一個文件,其中我需要按順序排列其中一列。我已經訂購了幾行相同但面對齊的問題。我沒有得到如何保持列對齊。如何保持列左對齊在perl
以下是我在哪裏集中在只有6列我的參考文件:
ATOM 1 CA GLY P 12 9.393 37.464 31.388 0.00 0.00 P1
ATOM 2 CA SER P 13 12.158 39.603 32.954 0.00 0.00 P1
ATOM 3 CA VAL P 52 41.104 47.186 31.473 0.00 0.00 P1
ATOM 4 CA GLN P 164 36.217 27.890 29.620 0.00 0.00 P1
ATOM 5 CA GLN P 165 34.809 29.586 32.649 0.00 0.00 P1
ATOM 6 CA GLY P 12 10.007 25.374 54.523 0.00 0.00 P2
ATOM 7 CA SER P 13 13.212 23.440 53.698 0.00 0.00 P2
ATOM 8 CA ASP P 14 16.884 24.084 54.463 0.00 0.00 P2
以下是我的代碼:
#!/usr/bin/perl
use warnings;
use strict;
open (DATA, "<try.pdb") or die "not";
open (FILE,">file.txt") or die "no";
my $n=11;
foreach my $line1 (<DATA>){
if ($line1 =~ m/^ATOM\s+\d+\s+[A-Z]+\s+[A-Z]+\s+P\s+(\d+)/){
$line1 =~ s/$1/$n/g;
print FILE $line1;
}
$n++;
}
以下是我的輸出,其中的第4和第5行排列得到了改變因爲在參考文件中有三位數字。
ATOM 1 CA GLY P 12 9.393 37.464 31.388 0.00 0.00 P1
ATOM 2 CA SER P 13 12.158 39.603 32.954 0.00 0.00 P1
ATOM 41 CA VAL P 14 41.104 47.186 31.473 0.00 0.00 P1
ATOM 153 CA GLN P 15 36.217 27.890 29.620 0.00 0.00 P1
ATOM 154 CA GLN P 16 34.809 29.586 32.649 0.00 0.00 P1
ATOM 155 CA GLY P 17 10.007 25.374 54.523 0.00 0.00 P2
ATOM 156 CA SER P 18 18.212 23.440 53.698 0.00 0.00 P2
ATOM 157 CA ASP P 19 16.884 24.084 54.463 0.00 0.00 P2
@Sorbique用戶輸入看起來像PDB格式。大多數pdb文件在原子記錄中不會有空白。所以最好避免使用分割和空白的PDB文件。 – mkHun
@mkHun咦?問題中的示例數據中有空格。 –
@MattJacob示例數據包含空白,但大多數PDB文件沒有空白,例如來自此PDB文件的「ATOM 188 O HIS A 24 19.075 22.262 50.693 1.00108.06 O」(http://www.rcsb.org/) PDB /文件/ 1mkh.pdb)。因此,大多數生物信息學家使用'substr'通過此PDB格式(http://deposit.rcsb.org/adit/docs/pdb_atom_format.html)以固定偏移量和長度提取數據。:) – mkHun