adicionando letras e caractere em uma coluna usando awk ou sed?

1

Eu tenho um arquivo com esta aparência:

A3 124.406526 8.281803
A3' 125.000684 8.389677
K4 123.072842 8.166373
K4' 120.092553 8.269080

Eu quero adicionar caracteres na primeira coluna, e o arquivo deve ser como:

A3N-H 124.406526 8.281803
A3'N-H 125.000684 8.389677
K4N-H 123.072842 8.166373
K4'N-H 120.092553 8.269080

Como posso fazer isso de maneira fácil pelo awk ou sed?

    
por Mo12 07.10.2016 / 18:49

2 respostas

3

com sed :

sed -E 's/^([^[:blank:]]+)/N-H/' file.txt
  • ([^[:blank:]]+) corresponde ao primeiro campo ( ^ ) e insere somente o grupo capturado

  • Na substituição, N-H é anexado ao primeiro campo, N-H

com awk :

awk '{sub("$", "N-H", $1)}; 1' file.txt 
  • sub("$", "N-H", $1) substitui o final do primeiro campo ( $ ) por N-H , isso significa necessariamente uma operação de acréscimo, em vigor

  • 1 é apenas um marcador de posição para true , para que o registro (modificado) seja impresso

Exemplo:

% cat file.txt                               
A3 124.406526 8.281803
A3' 125.000684 8.389677
K4 123.072842 8.166373
K4' 120.092553 8.269080

% sed -E 's/^([^[:blank:]]+)/N-H/' file.txt
A3N-H 124.406526 8.281803
A3'N-H 125.000684 8.389677
K4N-H 123.072842 8.166373
K4'N-H 120.092553 8.269080

% awk '{sub("$", "N-H", $1)}; 1' file.txt    
A3N-H 124.406526 8.281803
A3'N-H 125.000684 8.389677
K4N-H 123.072842 8.166373
K4'N-H 120.092553 8.269080
    
por 07.10.2016 / 18:57
1

Resumidamente, o one-liner:

awk '$1=$1"N-H"'
    
por 07.10.2016 / 19:00