Ich habe eine Datei wie diese:
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
Ich möchte alle Punkte .
in der zweiten Spalte durch ein Komma ,
ersetzen, wie ich es durch Wie kann ich sed
oder vorzugsweise awk
verwenden, um dies nur für die zweite Spalte anzuwenden, sodass meine Ausgabe dies tun würde Sehen Sie so aus:
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
Antwort
$ 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{}
Dieser Codeblock wird ausgeführt, bevor eine Eingabezeile verarbeitet wird. -
FS=OFS=";"
Setzen Sie das Eingabe- und Ausgabefeldtrennzeichen auf;
-
gsub(/\./, ",", $2)
und ersetzen Sie für jede Eingabezeile alle.
im 2. Feld mit,
-
1
ist eine zu druckende awk-Sprache Forts$0
(das den Eingabedatensatz enthält)
Antwort
sed "s/\./,/3" file
ersetzt das dritte Vorkommen des Punkts
Antwort
Fertig durch Die folgende Methode verwendet den Befehl awk
: awk -F ";" "{gsub(/\./,",",$2);print $1";"$2";"$3}" filename
Ausgabe
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