使用awk在特定步骤中更改特定列中每个字段的值?

使用awk在特定步骤中更改特定列中每个字段的值?,awk,text-processing,Awk,Text Processing,这是一个非常小的片段,我的一个输入文件中有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

这是一个非常小的片段,我的一个输入文件中有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

我能够通过此脚本获得一些适合您需要的内容:

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
    }
}
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