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 prikker . i anden kolonne med et komma , som jeg ville med sed "s/\./\,/g" file hvordan kan jeg bruge sed eller helst awk til kun at anvende dette i anden kolonne, så min output ville se sådan ud:
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 kodeblok udføres inden behandling af en hvilken som helst inputlinje -
FS=OFS=";"sæt input- og outputfeltadskiller som; -
gsub(/\./, ",", $2)for hver inputlinje, udskift alle.i 2. felt med, -
1er et forkert idiom at udskrive forts ent af$0(som indeholder inputposten)
Svar
sed "s/\./,/3" file
erstat den tredje forekomst af prikken
Svar
Udført med nedenstående metode ved hjælp af 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