我有以下格式的输入文件。
#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 中做到这一点。我该如何执行此操作。
这可能有效
awk '$5 == "+" {$2-=5000;$3+=2000}; $5 == "-"{$3+=5000;$2-=2000};{print}' file
Run Code Online (Sandbox Code Playgroud)