Изменить значения каждого поля в указанном столбце c в указанном шаге c с помощью awk? - PullRequest
0 голосов
/ 18 марта 2020

Это очень маленький фрагмент (у меня есть 100 файлов) из одного из моих входных файлов.

900 mgdg molecules in water t= 600000.00000 step= 400000000
119898
    1MGD     C5    1   2.709  14.491   1.493
    1MGD     H5    2   2.664  14.412   1.433
    1MGD     O5    3   2.717  14.464   1.627
    1MGD     C1    4   2.599  14.430   1.687
    1MGD     H1    5   2.546  14.350   1.634
    1MGD     C2    6   2.504  14.550   1.687
    1MGD     H2    7   2.527  14.628   1.759
    1MGD     O2    8   2.370  14.507   1.721
    1MGD    HO2    9   2.338  14.563   1.791
    1MGD     C3   10   2.492  14.611   1.546
    1MGD     H3   11   2.430  14.548   1.482
    1MGD     O3   12   2.425  14.739   1.527
    1MGD    HO3   13   2.337  14.713   1.551
    1MGD     C4   14   2.622  14.618   1.470
    1MGD     H4   15   2.598  14.620   1.364
    1MGD     O4   16   2.684  14.733   1.508
   19SOL     OW16143   5.027  21.387   5.795
   19SOL    HW116144   4.959  21.399   5.861
   19SOL    HW216145   5.071  21.472   5.790
   21SOL     OW16149   0.525  22.084   5.174
   21SOL    HW116150   0.615  22.054   5.168
   21SOL    HW216151   0.520  22.125   5.260
   43SOL     OW16215   0.547  18.610   5.603
   43SOL    HW116216   0.517  18.532   5.650
   43SOL    HW216217   0.632  18.585   5.567
   6.36535  23.37625  12.09434

Я хочу иметь такой вывод

900 mgdg molecules in water t= 600000.00000 step= 400000000
119898
    1MGD     C5    1   2.709  14.491   1.493
    1MGD     H5    2   2.664  14.412   1.433
    1MGD     O5    3   2.717  14.464   1.627
    1MGD     C1    4   2.599  14.430   1.687
    2MGD     H1    5   2.546  14.350   1.634
    2MGD     C2    6   2.504  14.550   1.687
    2MGD     H2    7   2.527  14.628   1.759
    2MGD     O2    8   2.370  14.507   1.721
    3MGD    HO2    9   2.338  14.563   1.791
    3MGD     C3   10   2.492  14.611   1.546
    3MGD     H3   11   2.430  14.548   1.482
    3MGD     O3   12   2.425  14.739   1.527
    4MGD    HO3   13   2.337  14.713   1.551
    4MGD     C4   14   2.622  14.618   1.470
    4MGD     H4   15   2.598  14.620   1.364
    4MGD     O4   16   2.684  14.733   1.508
   19SOL     OW16143   5.027  21.387   5.795
   19SOL    HW116144   4.959  21.399   5.861
   19SOL    HW216145   5.071  21.472   5.790
   21SOL     OW16149   0.525  22.084   5.174
   21SOL    HW116150   0.615  22.054   5.168
   21SOL    HW216151   0.520  22.125   5.260
   43SOL     OW16215   0.547  18.610   5.603
   43SOL    HW116216   0.517  18.532   5.650
   43SOL    HW216217   0.632  18.585   5.567
   6.36535  23.37625  12.09434

Так что я хочу измените значения с первого столбца, но только с 3 строки на 18 строку. Таким образом, на каждом шаге (например, 4) число перед MGD увеличивается. Я пытаюсь написать такой скрипт, но он не работает

awk '
{
    if (NR >= 3 && NR <= 18)
    {
        FNR==3
        {                  
        ++count
        value=count"MGD"
        }
        {
        $1=value
        }
        1
        FNR%129==0
        ++count
        value=count"MGD"
        {print $0}
    }

    else
    {
    print $0
    }
}
' eq4_1.gro | tee eq5_1.gro

1 Ответ

1 голос
/ 18 марта 2020

Мне удалось получить что-то, что должно соответствовать вашим потребностям с помощью этого скрипта:

BEGIN{
    stepSize = 4
}

{
    if (NR >= 3 && NR <= 18)
    {
        if ((NR - 3) % 4 == 0)
        {
            ++count
        }
        printf("%5dMGD %s %s %s %s %s\n", count, $2, $3, $4, $5, $6)
    }
    else
    {
        print
    }
}

gawk v5.0.0, работает с awk -f script.awk test.txt

output:

900 mgdg molecules in water t= 600000.00000 step= 400000000
119898
    1MGD C5 1 2.709 14.491 1.493
    1MGD H5 2 2.664 14.412 1.433
    1MGD O5 3 2.717 14.464 1.627
    1MGD C1 4 2.599 14.430 1.687
    2MGD H1 5 2.546 14.350 1.634
    2MGD C2 6 2.504 14.550 1.687
    2MGD H2 7 2.527 14.628 1.759
    2MGD O2 8 2.370 14.507 1.721
    3MGD HO2 9 2.338 14.563 1.791
    3MGD C3 10 2.492 14.611 1.546
    3MGD H3 11 2.430 14.548 1.482
    3MGD O3 12 2.425 14.739 1.527
    4MGD HO3 13 2.337 14.713 1.551
    4MGD C4 14 2.622 14.618 1.470
    4MGD H4 15 2.598 14.620 1.364
    4MGD O4 16 2.684 14.733 1.508
   19SOL     OW16143   5.027  21.387   5.795
   19SOL    HW116144   4.959  21.399   5.861
   19SOL    HW216145   5.071  21.472   5.790
   21SOL     OW16149   0.525  22.084   5.174
   21SOL    HW116150   0.615  22.054   5.168
   21SOL    HW216151   0.520  22.125   5.260
   43SOL     OW16215   0.547  18.610   5.603
   43SOL    HW116216   0.517  18.532   5.650
   43SOL    HW216217   0.632  18.585   5.567
   6.36535  23.37625  12.09434
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...