2011-11-10 158 views
0

有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  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_0.pdb > 1_0.pdb。但是,这将一次为一个文件工作...可以有一个解决方案的所有200个文件一次性...输出文件被命名为相同只有“文件”从名称中删除...

回答

3
for i in *.pdb; do sed '1,/TER/d' $i > ${i/File/}; done 
+0

+1。更好的是,对于我在{0..199}中; do sed'1,/ TER/d'File1_ $ i.pdb> 1_ $ i.pdb;完成“ - 这将允许它运行多次并在必要时进行调整。 (使用'* .pdb'会错误地捕获先前运行的输出文件。) – ruakh

+0

将“* .pdb”替换为“File * .pdb”,并且问题得到解决。我认为,“200文件”只是一个cca的例子,在所有情况下都不是确切的数字。 – deejayy

0

这可能工作:

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 
相关问题