我有多个文件......看起来像是:
ATOM 1244 O VAL 160 7.381 11.465 -2.646 1.000 60.790 0.000
ATOM 1245 CB VAL 160 5.766 13.870 -0.914 1.000 57.640 0.000
ATOM 1246 CG1 VAL 160 7.232 14.074 -0.568 1.000 57.530 0.000
ATOM 1247 CG2 VAL 160 5.065 15.213 -1.089 1.000 58.420 0.000
ATOM 1248 N VAL 1 -14.324 -25.299 8.568 1.000 77.840 0.000
ATOM 1249 CA VAL 1 -14.315 -23.826 8.346 1.000 78.450 0.000
ATOM 1250 C VAL 1 -15.181 -23.169 9.426 1.000 76.690 0.000
现在我必须在行后添加“TER”:
ATOM 1247 CG2 VAL 160 5.065 15.213 -1.089 1.000 58.420 0.000
此行在所有文件中都相同。所以它就像我应该在所有文件中找到这一行,然后在这一行之后添加“TER”..
我认为可以通过grep或sed来搜索行。但是如何在下一行添加字符串?我根本不清楚这个代码......请帮助一下......
答案 0 :(得分:0)
Sed,awk或perl是这里使用的工具。
sed有一个简短的手册页。阅读它,你将学习各种技巧。
在那里查看模式匹配,然后我认为有一个命令可以在行尾添加文本。
答案 1 :(得分:0)
尝试在shell上运行:
/usr/bin/perl -p -i -e "s/(ATOM\s+1247\s+CG2\s+VAL\s+160\s+5.065\s+15.213\s+-1.089\s+1.000\s+58.420\s+0.000)/\$1\nTER/g" my.allfiles
“ - p”导致Perl在程序周围采用以下循环,这使得迭代文件名参数有点像sed:
如果由于某种原因无法打开由参数命名的文件,Perl会向您发出警告,然后转到下一个文件。请注意,线条会自动打印。打印期间发生的错误被视为致命错误。要禁止打印,请使用-n开关。 -p覆盖-n开关。
答案 2 :(得分:0)
find root-path-to-search -type f -execdir sed -r \
's/^(\s*ATOM\s+1247\s+CG2\s+VAL\s+160\s+5\.065\s+15\.213\s+-1\.089\s+1\.000\s+58\.420\s+0\.000\s*)$/\1\nTER\n/' {} \+