Minulla on tällainen tiedosto:
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
Haluan korvata kaikki toisen sarakkeen pisteet .
pilkulla ,
kuten tekisin sed "s/\./\,/g" file
miten voin käyttää sed
tai mieluiten awk
tätä vain toiseen sarakkeeseen, joten lähtöni näyttää tältä:
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
Vastaa
$ 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{}
tämä koodilohko suoritetaan ennen minkä tahansa syöttörivin käsittelyä. -
FS=OFS=";"
aseta tulo- ja lähtökentän erotin;
-
gsub(/\./, ",", $2)
jokaiselle tuloriville, korvaa kaikki.
2. kentässä,
-
1
on awk-idioomi tulostettavaksi jatkuu$0
(joka sisältää syötetietueen) entsentit
Vastaa
sed "s/\./,/3" file
korvaa pisteen kolmannen esiintymän
vastaus
Valmis alla oleva menetelmä awk: n avulla
Komento: awk -F ";" "{gsub(/\./,",",$2);print $1";"$2";"$3}" filename
lähtö
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