Eu tenho a seguinte estrutura de dados no meu arquivo de teste:
"111","222","AAABBB","333","444","555"
Eu quero transformar o terceiro campo para que haja um '-' após o 3º [AZ] assim:
"111","222","AAA-BBB","333","444","555"
O uso da função split() é a melhor ferramenta para este trabalho? Aqui está o que eu tentei:
awk 'BEGIN{OFS=FS=","} {split($3, a, "[A-Z]{3}", seps); print seps[1]"/"seps[2]};' test
O comando acima faz o que eu quero, mas como posso imprimir a linha inteira, incluindo meu campo $ 3 atualizado? Resultado:
AAA-BBB
Solução curta
awk
:[A-Z]{3}
- padrão regex para combinar 3 letras maiúsculas&
- representa a substring precisa que foi correspondida pelo padrão regexpA saída:
Em
awk
, quando você reatribui o valor de uma variável de campo, o valor de$0
é recalculado:Então no seu caso:
Sua descrição da lógica desejada não é 100% clara, mas o seguinte comando Sed funciona em sua entrada de exemplo: