Ho un file come questo:
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
Voglio sostituire tutti i punti .
nella seconda colonna con una virgola ,
come farei con sed "s/\./\,/g" file
come posso utilizzare sed
o preferibilmente awk
per applicarlo solo per la seconda colonna, quindi il mio output sarebbe avere questo aspetto:
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
Risposta
$ 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{}
questo blocco di codice verrà eseguito prima di elaborare qualsiasi riga di input -
FS=OFS=";"
imposta il separatore dei campi di input e output come;
-
gsub(/\./, ",", $2)
per ogni riga di input, sostituisci tutti i.
nel secondo campo con,
-
1
è un idioma awk da stampare cont ents of$0
(che contiene il record di input)
Answer
sed "s/\./,/3" file
sostituisci la terza occorrenza del punto
Risposta
Fatto da metodo riportato di seguito utilizzando awk
Comando: awk -F ";" "{gsub(/\./,",",$2);print $1";"$2";"$3}" filename
output
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