데이터 조작에 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

관련 정보