Awk - Ersetzen Sie nur ein Zeichen in einer bestimmten Spalte

13

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 tun würde, wie sed 's/\./\,/g' fileich dies verwenden sedoder vorzugsweise awknur für die zweite Spalte anwenden kann, sodass meine Ausgabe folgendermaßen aussehen würde:

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
nath
quelle

Antworten:

22
$ 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)Ersetzen Sie für jede Eingabezeile alle .Felder im 2. Feld durch,
  • 1ist eine awk-Redewendung zum Drucken von Inhalten $0(die den Eingabedatensatz enthält)
Sundeep
quelle
1
Super, viel THX!
nath
9
sed 's/\./,/3' file

Ersetzen Sie das dritte Vorkommen des Punktes

Emilio Galarraga
quelle
2
Eine andere Verwendung von cat... Warum nicht einfach sed 's/\./,/3' file? (Auch das Komma muss nicht
maskiert
Ich habe die Beobachtungen berücksichtigt
Emilio Galarraga
catwäre hier nicht unbedingt nutzlos. Es würde der Operation erlauben, 2 Kerne zu verwenden.
Ron Rothman
@ronrothman Was wäre der Zweck des laufenden Kerns cat, außer Ressourcen zu verbrauchen ? Vielleicht, um einen kleinen Puffer bereitzustellen, aber dann sollte diese Absicht besser durch ein Werkzeug wie bufferdurch ausgedrückt werden cat.
Roland Illig
Zum Entkoppeln der (blockierenden) Festplattenlesevorgänge vom String-Ersatz. Ja, ich nehme an, Sie können sich das als Pufferung vorstellen.
Ron Rothman
4

Erledigt mit der folgenden Methode mit awk

Befehl: 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
Praveen Kumar BS
quelle