Am un fișier de genul acesta:
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
Vreau să înlocuiesc toate punctele .
din a doua coloană cu o virgulă ,
așa cum aș face cu sed "s/\./\,/g" file
cum pot folosi sed
sau de preferință awk
pentru a aplica acest lucru doar pentru a doua coloană, astfel încât rezultatul meu ar arata astfel:
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
Răspuns
$ 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{}
acest bloc de cod va fi executat înainte de procesarea oricărei linii de intrare -
FS=OFS=";"
setați separatorul de câmp de intrare și ieșire ca;
-
gsub(/\./, ",", $2)
pentru fiecare linie de intrare, înlocuiți toate.
în al doilea câmp cu,
-
1
este un idiom extraordinar de imprimat cont ents$0
(care conține înregistrarea de intrare)
Răspuns
sed "s/\./,/3" file
înlocuiți a treia apariție a punctului
Răspuns
Efectuat de mai jos metoda folosind awk
Comandă: awk -F ";" "{gsub(/\./,",",$2);print $1";"$2";"$3}" filename
ieșire
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