データ操作にawkを使用する

データ操作に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    -

列 5 が + の場合、列 2 から 5000 を減算し、列 3 に 2000 を追加して、次の出力を行う出力ファイルが必要です。

chr11   18410935    18431765    LDHA    +
chr2    85127762    85135799    TMSB10  +

列5に「-」が含まれている場合は、列3に5000を加算し、列2から2000を減算すると、次の出力が生成されます。

chr11   61729756    61740132    FTH1    -
chr12   21786274    21815728    LDHB    -

そのため、出力が入力と同じ順序で行われることを望みます。また、最初の行#trackをそのまま出力したいと思います。

私はこれをawkでやりたいです。どうすればいいですか?

ベストアンサー1

これはうまくいくかもしれません

awk '$5 == "+" {$2-=5000;$3+=2000}; $5 == "-"{$3+=5000;$2-=2000};{print}'  file

おすすめ記事