次の形式の入力ファイルがあります。
#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