使用 awk 进行数据操作

use*_*373 2 awk

我有以下格式的输入文件。

#track
chr11   61731756    61735132    FTH1    -
chr12   6643584 6647537 GAPDH   +
chr11   18415935    18429765    LDHA    +
chr12   21788274    21810728    LDHB    -
chr22   24236564    24237409    MIF +
chr4    6641817 6644470 MRFAP1  +
chr15   72491369    72523727    PKM -
chr10   73576054    73611082    PSAP    -
chr2    85132762    85133799    TMSB10  +
chr13   45911303    45915297    TPT1    -
Run Code Online (Sandbox Code Playgroud)

我想得到一个输出文件,如果第 5 列是 +,则从第 2 列减去 5000 并将 2000 添加到第 3 列,以便输出以下

chr11   18410935    18431765    LDHA    +
chr2    85127762    85135799    TMSB10  +
Run Code Online (Sandbox Code Playgroud)

如果第 5 列是“-”,则将 5000 添加到第 3 列并从第 2 列中减去 2000 以获得以下输出

chr11   61729756    61740132    FTH1    -
chr12   21786274    21815728    LDHB    -
Run Code Online (Sandbox Code Playgroud)

所以我希望输出与输入的顺序相同。我也想按原样输出第一行#track。

我想在 awk 中做到这一点。我该如何执行此操作。

iru*_*var 5

这可能有效

awk '$5 == "+" {$2-=5000;$3+=2000}; $5 == "-"{$3+=5000;$2-=2000};{print}'  file
Run Code Online (Sandbox Code Playgroud)