Sed 匹配图案并打印后续行
有200个名为File1_0.pdb、File1_60.pdb等的文件…看起来像:Sed 匹配图案并打印后续行,sed,design-patterns,match,Sed,Design Patterns,Match,有200个名为File1_0.pdb、File1_60.pdb等的文件…看起来像: ATOM 1 N VAL 1 8.897 -21.545 -7.276 1.00 0.00 ATOM 2 H1 VAL 1 9.692 -22.015 -6.868 1.00 0.00 ATOM 3 H2 VAL 1 9.228 -20.766 -7.827 1.00 0.00 ATOM
ATOM 1 N VAL 1 8.897 -21.545 -7.276 1.00 0.00
ATOM 2 H1 VAL 1 9.692 -22.015 -6.868 1.00 0.00
ATOM 3 H2 VAL 1 9.228 -20.766 -7.827 1.00 0.00
ATOM 4 H3 VAL 1 8.289 -22.236 -7.693 1.00 0.00
TER
ATOM 5 CA VAL 1 8.124 -20.953 -6.203 1.00 0.00
ATOM 6 HA VAL 1 8.072 -19.874 -6.345 1.00 0.00
ATOM 7 CB VAL 1 6.693 -21.515 -6.176 1.00 0.00
ATOM 8 HB VAL 1 6.522 -22.024 -5.227 1.00 0.00
ATOM 9 CG1 VAL 1 5.684 -20.370 -6.330 1.00 0.00
ATOM 10 1HG1 VAL 1 5.854 -19.861 -7.279 1.00 0.00
我必须在TER之后提取零件并放入另一个文件…这必须在所有200个文件上完成。我做了类似于sed'1、/TER/d'File1\u 0.pdb>1\u 0.pdb的事情。但这一次只能处理一个文件…是否有一个一次性处理所有200个文件的解决方案。。。输出文件的名称相同,只是从名称中删除了“文件”…这可能有效:
for i in *.pdb; do sed '1,/TER/d' $i > ${i/File/}; done
seq 0 200| xargs -i -n1 cp File1_{}.pdb 1_{}.pbd # backup files
sed -si '1,/TER/d' 1_{0..200}.pdb # edit files separately inline
这可能会奏效:
seq 0 200| xargs -i -n1 cp File1_{}.pdb 1_{}.pbd # backup files
sed -si '1,/TER/d' 1_{0..200}.pdb # edit files separately inline
+1.更好的是,{0..199}中的i的
;执行sed'1,/TER/d'文件1_$i.pdb>1_$i.pdb;完成
——这将允许多次运行,并在必要时进行调整。(使用*.pdb
会错误地捕获以前运行的输出文件。)将“.pdb”替换为“File.pdb”,问题就解决了。我假设,“200文件”只是一个cca示例,而不是所有情况下的确切数字。更好的是,{0..199}中的i的;执行sed'1,/TER/d'文件1_$i.pdb>1_$i.pdb;完成
——这将允许多次运行,并在必要时进行调整。(使用*.pdb
会错误地捕获以前运行的输出文件。)将“.pdb”替换为“File.pdb”,问题就解决了。我假设,“200文件”只是一个cca示例,而不是所有情况下的确切数字。