awk '{if ($5 == "A") gsub(/A/,"B",$5)}1' file > new_file
Eu tenho um arquivo PDB (veja abaixo) e preciso alterar o A na coluna 5 para um B, e preciso alterá-lo sem alterar o formato do arquivo original. Consegui mudar o A para um B usando este comando awk:
$ awk '{sub(/A/,"B",$5); print;}' file 1 > file 2
ATOM 1 N GLY A 302 77.282 -99.685 -10.078 1.00 0.00 N
ATOM 2 CA GLY A 302 78.728 -99.868 -10.031 1.00 0.00 C
ATOM 3 C GLY A 302 79.457 -98.600 -10.458 1.00 0.00 C
ATOM 4 O GLY A 302 80.646 -98.435 -10.185 1.00 0.00 O
awk '{if ($5 == "A") gsub(/A/,"B",$5)}1' file > new_file
Eu trabalho muito com arquivos PDB. Eu acho que seria mais fácil abrir o arquivo no Vim, e então fazer :%s/ A / B /g
Tags command-line awk