помощь с awk скриптом

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
snysmumrik
проходил мимо
Сообщения: 1
Зарегистрирован: 2013-04-17 9:42:33

помощь с awk скриптом

Непрочитанное сообщение snysmumrik » 2013-04-17 9:44:50

Доброе утро, уважаемые. Прошу вашей помощи в редактировании awk скрипта.
Вот сам скрипт

Код: Выделить всё

BEGIN { printf ("CRYST1   200.000   200.000   200.000  90.00  90.00  90.00 P 1           1\n")
      maxatoms=1000
      natom=0
      found_struct = 0
      found_bond   = 0
      }
{
   if( NF == 5 )
   {
              foundff=0
              natom++
              fftype[natom]="UNKNOWN"
              if ($1 ~ /CT/)
                {
                   fftype[natom] = "C"
                   foundff=1
                }
              else if ($1 ~ /OH/)
                {
                   fftype[natom] = "O"
                   foundff=1
                }
              else if ($1 ~ /HC/)
                {
                   fftype[natom] = "H"
                   foundff=1
                }
                else if ($1 ~ /N/)
                {
                   fftype[natom] = "N"
                   foundff=1
                }

              else if ($1 ~ /H1/)
                {
                   fftype[natom] = "H"
                   foundff=1
                }
              else if ($1 ~ /HO/)
                {
                   fftype[natom] = "H"
                   foundff=1
                }
              else if ($1 = "C")
                {
                   fftype[natom] = "C"
                   foundff=1
                }
              else if ($1 = "O")
                {
                   fftype[natom] = "O"
                   foundff=1
                }

              next

              x[natom] = $1
              y[natom] = $2
              z[natom] = $3


              if  (foundff == 0)
                printf("PROBLEM : Atom ff type %s not known\n", $6)
  }

}

END {
         for (iatom=1; iatom <= natom; iatom++)
          {
            printf("HETATM %d %2s %d %14.9f %14.9f %14.9f\n" ,
                  iatom, fftype[iatom], iatom,  x[iatom], y[iatom], z[iatom])
          }
         printf ("END\n")
    }
Вот файл формат которого я хочу изменить.

Код: Выделить всё

   0         3       186                  200                75202
timestep       500       186         0         3    0.002000    1.000000
       40.0000000000        0.0000000000        0.0000000000
       -0.0000000034       40.0000000000        0.0000000000
       -0.0000000034       -0.0000000034       40.0000000000
CT_1             1   12.011000    0.061000    1.087513
    -1.961325738         1.828501682        -8.933652557
CT_1             2   12.011000    0.061000    0.789711
    -3.851025437         3.495427316        -10.05849230
CT_1             3   12.011000    0.061000    0.581330
    -5.804493575         4.589489777        -8.369482861
и т.д.

В результате работы скрипта я хочу получить

Код: Выделить всё

CRYST1   200.000   200.000   200.000  90.00  90.00  90.00 P 1           1
HETATM 1  C 1     -1.961325738         1.828501682        -8.933652557
HETATM 2  C 2     -3.851025437         3.495427316        -10.05849230
HETATM 3  C 3     -5.804493575         4.589489777        -8.369482861
и т.д.

Однако координаты файла(следующая строчка после CT_1 1 12.011000 0.061000 1.087513) скрипт не подхватывает. Не могли бы вы взглянуть и подсказать как мне решить эту проблему. Заранее благодарен.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: помощь с awk скриптом

Непрочитанное сообщение kpp » 2013-04-17 10:17:01

Код: Выделить всё

if( NF == 5 )
- только 5-ю строку, а нужно все после 5-й строки, т.е. вместо равно, больше.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.