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, -
1este 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