Remove caracteres em uma coluna específica antes de um caractere específico

2

Eu tenho um arquivo assim:

chr22   43089055    43089055    -   NM_017436   C   300 903delC
chr22   43089715-43089717   43089715-43089717   -   NM_017436   CTT 79

Eu quero remover todos os caracteres antes do - na coluna 3 para obter uma saída, conforme descrito abaixo:

chr22   43089055    43089055    -   NM_017436   C   300 903delC
chr22   43089715-43089717   43089717    -   NM_017436   CTT 79

Eu usei awk '{$2+=0}1' file no passado para remover caracteres após o - , mas não acredito que possa usar essa mesma técnica para o meu problema atual. Alguma sugestão?

    
por cosmictypist 01.07.2015 / 17:48

3 respostas

5

Perl para o resgate:

perl -lane 'BEGIN { $, = "\t" } $F[2] =~ s/.*-//; print @F' < file
  • -l acrescenta novas linhas a print
  • -n lê a linha de entrada por linha
  • -a divide cada linha no espaço em branco e preenche o @F array
  • $, separa os membros da lista quando impressos, configure-o para a guia
  • s/.*-// substitui tudo até um traço sem nada, está ligado à terceira coluna (matrizes são indexadas de 0)
por 01.07.2015 / 18:00
3

Como algumas variantes diferentes

  1. awk

    awk '{$3=A[split($3,A,"-")]}1' file

  2. sed

    sed -r 's/((\S+\s+){2})[^- ]+-//' file

por 01.07.2015 / 18:50
0

Usando awk :

< input awk 'BEGIN {FS=OFS="   "} {gsub(/[^-]*-/, "", $3); print}'
    
por 01.07.2015 / 18:06

Tags