Tenho um arquivo como este:
2018.01.02;1.5;comment 1 2018.01.04;2.75;comment 2 2018.01.07;5.25;comment 4 2018.01.09;1.25;comment 7
Desejo substituir todos os pontos .
na segunda coluna por uma vírgula ,
como faria com sed "s/\./\,/g" file
como posso usar sed
ou preferencialmente awk
para aplicar isso apenas para a segunda coluna, para que minha saída tem esta aparência:
2018.01.02;1,5;comment 1 2018.01.04;2,75;comment 2 2018.01.07;5,25;comment 4 2018.01.09;1,25;comment 7
Resposta
$ awk "BEGIN{FS=OFS=";"} {gsub(/\./, ",", $2)} 1" ip.txt 2018.01.02;1,5;comment 1 2018.01.04;2,75;comment 2 2018.01.07;5,25;comment 4 2018.01.09;1,25;comment 7
-
BEGIN{}
este bloco de código será executado antes de processar qualquer linha de entrada -
FS=OFS=";"
defina o separador de campo de entrada e saída como;
-
gsub(/\./, ",", $2)
para cada linha de entrada, substitua todos os.
no 2º campo com,
-
1
é um idioma awk para imprimir cont ents de$0
(que contém o registro de entrada)
Resposta
sed "s/\./,/3" file
substitua a terceira ocorrência do ponto
Resposta
Feito por método abaixo usando awk
Comando: awk -F ";" "{gsub(/\./,",",$2);print $1";"$2";"$3}" filename
saída
2018.01.02;1,5;comment 1 2018.01.04;2,75;comment 2 2018.01.07;5,25;comment 4 2018.01.09;1,25;comment 7