Tengo un archivo 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
Quiero reemplazar todos los puntos .
en la segunda columna con una coma ,
como lo haría con sed "s/\./\,/g" file
¿cómo puedo usar sed
o preferiblemente awk
para aplicar esto solo para la segunda columna, por lo que mi resultado sería se ve así:
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
Respuesta
$ 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 bloque de código se ejecutará antes de procesar cualquier línea de entrada -
FS=OFS=";"
establezca el separador de campo de entrada y salida como;
-
gsub(/\./, ",", $2)
para cada línea de entrada, reemplace todas las.
en el segundo campo con,
-
1
es un modismo awk para imprimir cont entradas de$0
(que contiene el registro de entrada)
Respuesta
sed "s/\./,/3" file
reemplaza la tercera aparición del punto
Respuesta
Hecho por siguiente método usando awk
Comando: awk -F ";" "{gsub(/\./,",",$2);print $1";"$2";"$3}" filename
salida
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