Awk 编辑后保持PDB文件格式。
我的xxx.pdb文件如下:Awk 编辑后保持PDB文件格式。,awk,formatting,pdb,Awk,Formatting,Pdb,我的xxx.pdb文件如下: ATOM 1910 CB SER 128 45.806 50.621 39.840 1.00 9.36 ATOM 1913 OG SER 128 44.538 51.195 39.571 1.00 9.36 ATOM 1915 C SER 128 45.325 48.172 40.360 1.00 9.36 ATOM 1916 O SER 128
ATOM 1910 CB SER 128 45.806 50.621 39.840 1.00 9.36
ATOM 1913 OG SER 128 44.538 51.195 39.571 1.00 9.36
ATOM 1915 C SER 128 45.325 48.172 40.360 1.00 9.36
ATOM 1916 O SER 128 45.368 47.955 39.155 1.00 9.36
ATOM 1917 N SER 129 44.953 47.236 41.238 1.00 11.24
ATOM 1919 CA SER 129 44.395 45.938 40.826 1.00 11.24
ATOM 1921 CB SER 129 44.091 45.053 42.031 1.00 11.24
ATOM 1924 OG SER 129 43.483 45.786 43.085 1.00 11.24
当我尝试这段代码时:awk'{if($10
awk'BEGIN{FS=OFS=“\t”;}{if($10ifperl
可以
$ perl -ape 's/\S+(?=\s+\S+$)/1.50/ if $F[-1]<11' xxx.pdb
ATOM 1910 CB SER 128 45.806 50.621 39.840 1.50 9.36
ATOM 1913 OG SER 128 44.538 51.195 39.571 1.50 9.36
ATOM 1915 C SER 128 45.325 48.172 40.360 1.50 9.36
ATOM 1916 O SER 128 45.368 47.955 39.155 1.50 9.36
ATOM 1917 N SER 129 44.953 47.236 41.238 1.00 11.24
ATOM 1919 CA SER 129 44.395 45.938 40.826 1.00 11.24
ATOM 1921 CB SER 129 44.091 45.053 42.031 1.00 11.24
ATOM 1924 OG SER 129 43.483 45.786 43.085 1.00 11.24
$perl-ape的s/\s+(?=\s+\s+$)/1.50/如果$F[-1]带有GNU awk for gensub():
$awk'$NF我不确定您想要完成什么,但一般来说,要读取xxx.pdb文件,然后以正确的格式输出一个新的.pdb文件,我会这样做:
awk '{printf "%4s%7.0f%3s%6s%2s%4.0f%12.3f%8.3f%8.3f%6.2f%7.2f\n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11}' < xxx.pdb >> new.pdb
awk'{printf”%4s%7.0f%3s%6s%2s%4.0f%12.3f%8.3f%8.3f%6.2f%7.2f\n“,$1、$2、$3、$4、$5、$6、$7、$8、$9、$10、$11}>new.pdb
(这段代码除了复制外实际上什么都不会做)
如果我想使用一个变量来更改其中一个字段(如第二个字段),它将如下所示:
VARIABLE=3
awk -v x=$VARIABLE '{printf "%4s%7.0f%3s%6s%2s%4.0f%12.3f%8.3f%8.3f%6.2f%7.2f\n", $1, ($2 + x), $3, $4, $5, $6, $7, $8, $9, $10, $11}' < xxx.pdb >> new.pdb
变量=3
awk-vx=$VARIABLE'{printf”%4s%7.0f%3s%6s%2s%4.0f%12.3f%8.3f%8.3f%6.2f%7.2f\n“,$1,($2+x),$3,$4,$5,$6,$7,$8,$9,$10,$11}>new
这将在pdb文件的整个第二列中添加3。字段之间的空白是什么?单个制表符或空白字符序列或每一个或其他字符的任意组合?您的文章在每行开始前是否确实有空白,或者这是一个打字错误?欢迎使用。使用格式化工具使您的文章更具可读性可修改。对代码、日志和错误文本使用代码阻塞
,并用粗体和斜体突出显示内容
$ awk '$NF<11{$0=gensub(/\S+(\s+\S+)$/,"1.50\\1",1)}1' file
ATOM 1910 CB SER 128 45.806 50.621 39.840 1.50 9.36
ATOM 1913 OG SER 128 44.538 51.195 39.571 1.50 9.36
ATOM 1915 C SER 128 45.325 48.172 40.360 1.50 9.36
ATOM 1916 O SER 128 45.368 47.955 39.155 1.50 9.36
ATOM 1917 N SER 129 44.953 47.236 41.238 1.00 11.24
ATOM 1919 CA SER 129 44.395 45.938 40.826 1.00 11.24
ATOM 1921 CB SER 129 44.091 45.053 42.031 1.00 11.24
ATOM 1924 OG SER 129 43.483 45.786 43.085 1.00 11.24
awk '{printf "%4s%7.0f%3s%6s%2s%4.0f%12.3f%8.3f%8.3f%6.2f%7.2f\n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11}' < xxx.pdb >> new.pdb
VARIABLE=3
awk -v x=$VARIABLE '{printf "%4s%7.0f%3s%6s%2s%4.0f%12.3f%8.3f%8.3f%6.2f%7.2f\n", $1, ($2 + x), $3, $4, $5, $6, $7, $8, $9, $10, $11}' < xxx.pdb >> new.pdb