найти строку и добавить строку - PullRequest
0 голосов
/ 14 октября 2011

У меня есть несколько файлов ... это выглядит так:

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..но как строку можно добавить в следующую строку? Я не совсем понимаю этот код. Поможет, пожалуйста, ...

Ответы [ 3 ]

0 голосов
/ 14 октября 2011

Попробуйте запустить это в оболочке:

/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:

  1. LINE:
  2. while (<>) {
  3. ... # ваша программа отправляется сюда
  4. } продолжить {
  5. напечатать или умереть "-p пункт назначения: $! \ n ";
  6. }

Если файл, названный аргументом, не может быть открыт по какой-либо причине, Perl предупредит вас об этом и перейдет кследующий файл.Обратите внимание, что строки печатаются автоматически.Ошибка, возникающая во время печати, считается фатальной.Для подавления печати используйте ключ -n.-P переопределяет ключ -n.

http://perldoc.perl.org/perlrun.html

0 голосов
/ 14 октября 2011
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/' {} \+
0 голосов
/ 14 октября 2011

Sed, awk или perl - инструменты для использования здесь.

sed имеет короткую справочную страницу.Прочтите его, и вы изучите все виды трюков.

Найдите там соответствие шаблонов, и я думаю, что есть команда для добавления текста в конец строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...