awk edite o valor da coluna se numérico

0

O que eu gostaria de fazer é procurar por linhas onde a primeira coluna não comece com 'rs' ou 'chr' ENTÃO se essas linhas começarem com um número, acrescente 'chr' ao valor da primeira coluna, caso contrário, deixe como foi - sem acrescentar.

Eu tenho o seguinte código:

awk '((!($1 ~ /rs/ || $1 ~ /chr/)) && $1 ~ /^[[:0-9:]]|$/) {$1 = "chr"$1}1' filename > newfilename

Isso é bom, mas acrescenta 'chr' a todos os valores da primeira coluna que não começam com 'rs' ou 'chr'. Existem alguns valores nesta coluna que não quero alterar e todos começam com letras (a-z). Eu só quero alterar os valores que começam com números (0-9).

Obrigado!

    
por Bob 24.08.2015 / 19:25

2 respostas

1

Como já mencionado nos comentários de Fiximan, procurar um dígito filtra automaticamente 'rs' e 'chr'. Então, se você quiser adicionar linhas começando com um dígito com 'chr', você pode fazer o seguinte:

awk '{if ($1 ~ /^[:0-9:]/) printf "chr%s\n", $0; else printf "%s\n", $0;}' filename > newfile
    
por 24.08.2015 / 19:44
0

usando sed

sed 's/^[0-9]/chr&/' file
    
por 24.08.2015 / 19:53