【发布时间】:2014-04-07 19:47:24
【问题描述】:
这是文件a.pdb:
ATOM 1 N ARG 1 0.000 0.000 0.000 1.00 0.00 N
ATOM 2 H1 ARG 1 0.000 0.000 0.000 1.00 0.00 H
ATOM 3 H2 ARG 1 0.000 0.000 0.000 1.00 0.00 H
ATOM 4 H3 ARG 1 0.000 0.000 0.000 1.00 0.00 H
这是文件a.xyz:
16.388 -5.760 -23.332
17.226 -5.608 -23.768
15.760 -5.238 -23.831
17.921 -5.926 -26.697
我想用a.xyz 列替换a.pdb 的第6,7 和第8 列。替换后,我需要维护a.pdb 的制表符/空格/列。
我试过了:
awk 'NR==FNR {fld1[NR]=$1; fld2[NR]=$2; fld3[NR]=$3; next} {$6=fld1[FNR]; $7=fld2[FNR]; $8=fld3[FNR]}1' a.xyz a.pdb
但它不保留格式。
【问题讨论】:
-
替换算法是什么?一个文件的第一行内容与另一个文件的第一行相同?
-
行号匹配。 @fedorqui
-
好吧,我猜
a.pdb是制表符分隔的,而a.xyz是空格分隔的。如果您将它们都设为 tab sep 会怎样? -
我试过 cat a.xyz | column -t 选项,但在 awk 替换后 a.pdb 失去其格式。它不会保持列号对齐。
-
用
BEGIN{FS=OFS="\t"}让你的FS 和OFS 显式?祝你好运。