Jeg har en fil som denne:
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
Jeg vil erstatte alle punktene .
i den andre kolonnen med et komma ,
som jeg ville gjort med sed "s/\./\,/g" file
hvordan kan jeg bruke sed
eller helst awk
for å bare bruke dette for den andre kolonnen, så utdataene mine ville se slik ut:
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
Svar
$ 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{}
denne kodeblokken vil bli utført før du behandler en hvilken som helst inngangslinje -
FS=OFS=";"
sett inn- og utgangsfeltavskiller som;
-
gsub(/\./, ",", $2)
for hver inngangslinje, erstatt alle.
i 2. felt med,
-
1
er et vanskelig idiom å skrive ut forts ent av$0
(som inneholder inngangsposten)
Svar
sed "s/\./,/3" file
erstatt den tredje forekomsten av prikken
Svar
Utført med nedenfor metoden ved hjelp av awk
Kommando: 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