使用bash合并两个txt文件
我有: txt文件的拉取由许多字符串组成 和一个reference.txt(短)文件 我的bash脚本执行以下操作: 1) 在循环拉取txt文件时,它会对每个文件执行某些操作(不改变其组成),然后 2) 应将每个文件的合成与reference.txt的合成合并到指定位置 e、 g每个工作文件的结尾如下所示使用bash合并两个txt文件,bash,Bash,我有: txt文件的拉取由许多字符串组成 和一个reference.txt(短)文件 我的bash脚本执行以下操作: 1) 在循环拉取txt文件时,它会对每个文件执行某些操作(不改变其组成),然后 2) 应将每个文件的合成与reference.txt的合成合并到指定位置 e、 g每个工作文件的结尾如下所示 ATOM 13703 HA GLN 100 83.311 32.648 23.654 0.1232 1.3870 ATOM 13704 HG2 GLN 100
ATOM 13703 HA GLN 100 83.311 32.648 23.654 0.1232 1.3870
ATOM 13704 HG2 GLN 100 82.879 33.518 22.168 0.0203 1.4870
ATOM 13705 HB2 GLN 100 84.606 31.260 21.824 0.0452 1.4870
ATOM 13706 HE22 GLN 100 84.225 34.975 20.004 0.4304 0.6000
ATOM 13707 OE1 GLN 100 82.389 32.538 19.564 -0.6098 1.6612
ATOM 13708 NE2 GLN 100 83.817 34.212 19.506 -0.9574 1.8240
ATOM 13709 HE21 GLN 100 83.663 34.375 18.529 0.4304 0.6000
TER
END
在这里,我要替换reference.pdb全文中的最后一个字符串“END”
HETATM 5420 CU CU A 559 54.926 67.840 66.647 1.00 47.11 CU
HETATM 5421 MG MG A 560 58.119 65.472 53.773 1.00 12.89 MG
HETATM 5422 CA CA A 561 78.459 57.926 52.401 1.00 22.70 CA
HETATM 7924 CU CU B 270 62.144 60.705 47.277 1.00 40.39 CU
HETATM 7925 CU CU B 271 60.809 60.526 45.118 1.00 44.84 CU
最终获得每个被删除文件的smth,如:
ATOM 13695 O GLN 100 82.103 30.697 24.719 -0.8042 1.6612
ATOM 13696 CB GLN 100 83.798 31.641 22.204 -0.0664 1.9080
ATOM 13697 CG GLN 100 83.606 33.044 21.616 -0.0210 1.9080
ATOM 13698 CD GLN 100 83.251 33.196 20.146 0.7093 1.9080
ATOM 13699 H GLN 100 85.355 33.328 24.357 0.2681 0.6000
ATOM 13700 OXT GLN 100 83.889 29.761 24.981 -0.8042 1.6612
ATOM 13701 HG3 GLN 100 84.467 33.577 21.792 0.0203 1.4870
ATOM 13702 HB3 GLN 100 82.992 31.127 22.034 0.0452 1.4870
ATOM 13703 HA GLN 100 83.311 32.648 23.654 0.1232 1.3870
ATOM 13704 HG2 GLN 100 82.879 33.518 22.168 0.0203 1.4870
ATOM 13705 HB2 GLN 100 84.606 31.260 21.824 0.0452 1.4870
ATOM 13706 HE22 GLN 100 84.225 34.975 20.004 0.4304 0.6000
ATOM 13707 OE1 GLN 100 82.389 32.538 19.564 -0.6098 1.6612
ATOM 13708 NE2 GLN 100 83.817 34.212 19.506 -0.9574 1.8240
ATOM 13709 HE21 GLN 100 83.663 34.375 18.529 0.4304 0.6000
TER
HETATM 5420 CU CU A 559 54.926 67.840 66.647 1.00 47.11 CU
HETATM 5421 MG MG A 560 58.119 65.472 53.773 1.00 12.89 MG
HETATM 5422 CA CA A 561 78.459 57.926 52.401 1.00 22.70 CA
HETATM 7924 CU CU B 270 62.144 60.705 47.277 1.00 40.39 CU
HETATM 7925 CU CU B 271 60.809 60.526 45.118 1.00 44.84 CU
END
使用sed,在
END
字符串之前插入reference.pdb的内容:
sed '
/END/ {
r reference.pdb
a END
d
}
' workfile
编辑:
如果文件名存储在变量中,则sed命令必须用双引号括起来:
ref=reference.pdb
sed "
/END/ {
r $ref
a END
d
}
" workfile
使用sed,在
END
字符串之前插入reference.pdb的内容:
sed '
/END/ {
r reference.pdb
a END
d
}
' workfile
编辑:
如果文件名存储在变量中,则sed命令必须用双引号括起来:
ref=reference.pdb
sed "
/END/ {
r $ref
a END
d
}
" workfile
这很奇怪,但不管用。我把它放在sed中提供的循环中,但是我的reference.pdb是在变量sed'/END/{r${ref}a END d}'$output/${tit}\u pqr下定义的。pdb@user3470313我更新了。Sed命令必须双引号,以允许变量展开。并且不要像在你的评论中那样使用一行代码,
r
和a
命令不能跟在同一行的其他命令后面。这很奇怪,但不起作用。我把它放在sed中提供的循环中,但是我的reference.pdb是在变量sed'/END/{r${ref}a END d}'$output/${tit}\u pqr下定义的。pdb@user3470313我更新了。Sed命令必须双引号,以允许变量展开。并且不要像在您的评论中那样使用单行线,r
和a
命令不能与同一行上的其他命令一起使用。跨站点复制的跨站点复制