Usando o awk para manipulação de dados

1

Eu tenho um arquivo de entrada no seguinte formato.

#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    -

Eu quero obter um arquivo de saída no qual, se a quinta coluna for +, subtraia 5000 da coluna 2 e adicione 2000 à coluna 3, de forma a gerar a saída seguinte

chr11   18410935    18431765    LDHA    +
chr2    85127762    85135799    TMSB10  +

Se a quinta coluna for "-", adicione 5000 à coluna 3 e subtraia 2000 da coluna 2 para obter a seguinte saída

chr11   61729756    61740132    FTH1    -
chr12   21786274    21815728    LDHB    -

Então, quero que a saída esteja na mesma ordem da entrada. Também quero mostrar a primeira linha #track como é.

Eu quero fazer isso no awk. Como posso fazer isso?

Eu sou novo no awk e ainda aprendo.

Obrigado

    
por user3138373 01.05.2014 / 22:03

1 resposta

5

Isso pode funcionar

awk '$5 == "+" {$2-=5000;$3+=2000}; $5 == "-"{$3+=5000;$2-=2000};{print}'  file
    
por 01.05.2014 / 22:12

Tags