Заменить слово в определенной строке с проверкой нескольких ключевых слов - PullRequest
0 голосов
/ 03 октября 2018

Мне нужно изменить много файлов .pdb для работы, и мне нужно написать скрипт этой операции, чтобы каждый раз не тратить время на ручное выполнение этого.

Я получил файл с этим конкретным форматом (этоИзвлеките из файла, вы можете увидеть полный файл здесь ):

ATOM   5210  C4    G B  96      10.157 -47.431 -42.832  1.00 43.97           C  
ATOM   5211  P     G B  97      11.305 -41.644 -44.835  1.00 26.64           P  
ATOM   5212  OP1   A B  97      12.654 -41.242 -44.460  1.00 26.64           O  
ATOM   5213  OP2   A B  97      10.167 -41.192 -44.014  1.00 26.64           O  
ATOM   5214  O5'   A B  97      11.079 -41.206 -46.340  1.00 26.64           O

В частности, для каждого файла мне нужно заменить слово «OP1» в третьем столбце другим ключевым словом, ноТОЛЬКО если в первом столбце отображается «ATOM», а в шестом столбце есть определенное число.

Я пытался написать сценарий с помощью sed, но не получил приличного результата.

Надеюсь, кто-нибудьможет помочь

Спасибо

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Попробуйте этот скрипт

while read p; do
    value1=`echo $p | cut -d' ' -f1`
    value2=`echo $p | cut -d' ' -f3`
    value3=`echo $p | cut -d' ' -f6`
    if [ "$value1" == "ATOM" ] && [ $value3 == 97 ]; then
        if [ "$value2" == "OP1" ]; then
            echo $p | awk '{gsub("OP1", "newtext", $0); print}'
        fi
    fi
done < 1X8W.pdb

Замените newtext текстом, который вы хотите заменить на OP1.Кроме того, измените число сравнения $ value3 с 97 на любое другое, если вы также проверяете любой другой номер.

0 голосов
/ 04 октября 2018

Похоже, это может быть то, что вы пытаетесь сделать:

awk '($1=="ATOM") && ($6==97) { sub(/^OP1$/,"other",$3); print }' file

, но без подробностей в вашем вопросе мы все только догадываемся и не можем проверить это.

0 голосов
/ 03 октября 2018

Простой способ начать:

улучшено:

awk '{if ($1=="ATOM" && $6=="410" && $3=="OP2")sub($3,"XXX"); print }' 1X8W.pdb

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