Mám takový soubor:
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
Chci nahradit všechny tečky .
ve druhém sloupci čárkou ,
stejně jako sed "s/\./\,/g" file
jak mohu použít sed
nebo nejlépe awk
použít to pouze pro druhý sloupec, takže můj výstup by vypadat takto:
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
odpověď
$ 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{}
tento blok kódu bude proveden před zpracováním jakéhokoli vstupního řádku -
FS=OFS=";"
nastavit oddělovač vstupního a výstupního pole jako;
-
gsub(/\./, ",", $2)
pro každý vstupní řádek, nahradit všechny.
ve 2. poli s,
-
1
je falešný idiom k tisku pokr ents$0
(který obsahuje vstupní záznam)
Odpověď
sed "s/\./,/3" file
nahradit třetí výskyt tečky
odpověď
Hotovo níže uvedená metoda používající awk
Příkaz: awk -F ";" "{gsub(/\./,",",$2);print $1";"$2";"$3}" filename
výstup
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