Van egy ilyen fájlom:
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
A második oszlopban lévő összes pontot .
egy vesszővel ,
szeretném lecserélni, ahogyan ezt a hogyan használhatom a sed
vagy lehetőleg a awk
alkalmazást, hogy ezt csak a második oszlopra alkalmazzam, így a kimenetem így néz ki:
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
Válasz
$ 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{}
ez a blokk blokk végrehajtásra kerül bármely bemeneti sor feldolgozása előtt -
FS=OFS=";"
állítsa be a bemeneti és kimeneti mező elválasztóját;
-
gsub(/\./, ",", $2)
elemre minden bemeneti sornál, cserélje le az összes.
a 2. mezőben, a,
- iv
alkalmazással folytatás
(amely a bemeneti rekordot tartalmazza) ents
Válasz
sed "s/\./,/3" file
pótolja a pont harmadik előfordulását
Válasz
Készítette alábbi módszer az awk használatával
Parancs: 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