[gelöst] suchen und ersetzen (sed)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
joe2017
Beiträge: 1274
Registriert: 07.08.2017 14:29:51

[gelöst] suchen und ersetzen (sed)

Beitrag von joe2017 » 31.03.2022 12:58:46

Hallo zusammen,

ich habe eine Frage zum Thema suchen und ersetzen mit sed.

Ich habe folgende Zeilen in einer Datei:

Code: Alles auswählen

"CPU": 1,1,
"CPU": 10,1,
"CPU": 1,10,
"CPU": 10,10,
Die Zahlen sind natürlich nur ein Beispiel. Ich habe ein oder zweistellige Zahlen und dazwischen ist ein "komma".
Ich möchte gerne das erste "komma" durch einen "punkt" ersetzen ohne das "komma" am Ende zu ersetzen.
Ich weiß jedoch nicht welche Werte in der Datei stehen.

Hat jemand eine Idee wie ich das mit sed erledigen kann?
Zuletzt geändert von joe2017 am 31.03.2022 13:13:59, insgesamt 1-mal geändert.

Benutzeravatar
Meillo
Moderator
Beiträge: 9224
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: suchen und ersetzen (sed)

Beitrag von Meillo » 31.03.2022 13:02:06

Ganz einfach:

Code: Alles auswählen

sed 's/,/./'
Dieser Befehl ersetzt das erste Komma jeder Zeile durch einen Punkt.
Use ed once in a while!

Benutzeravatar
towo
Beiträge: 4541
Registriert: 27.02.2007 19:49:44
Lizenz eigener Beiträge: GNU Free Documentation License

Re: suchen und ersetzen (sed)

Beitrag von towo » 31.03.2022 13:07:53

Muss der Punkt nicht maskiert werden?

also

Code: Alles auswählen

sed 's/,/\./'

Benutzeravatar
joe2017
Beiträge: 1274
Registriert: 07.08.2017 14:29:51

Re: suchen und ersetzen (sed)

Beitrag von joe2017 » 31.03.2022 13:13:34

Warum einfach wenn´s auch kompliziert geht??? :facepalm:

Ich hab eben folgendes gefunden was auch funktioniert

Code: Alles auswählen

sed -r -i 's/([0-9]),([0-9])/\1.\2/g' /path/to/file
Trotzdem Vielen Dank

Benutzeravatar
Meillo
Moderator
Beiträge: 9224
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: suchen und ersetzen (sed)

Beitrag von Meillo » 31.03.2022 13:19:51

towo hat geschrieben: ↑ zum Beitrag ↑
31.03.2022 13:07:53
Muss der Punkt nicht maskiert werden?

also

Code: Alles auswählen

sed 's/,/\./'
Nur im regulaeren Ausdruck aber nicht im Ersatztext.



@joe2017:

Den g-Modifier am Ende des s-Kommandos sollte man bewusster nutzen und nicht einfach immer hinschreiben (wie das wohl viele Anfaenger machen). Er steht fuer ``global'', was bedeutet, dass alle Vorkommen auf der Zeile ersetzt werden sollen. Wenn man ihn weglaesst wird nur das erste Vorkommen auf der Zeile ersetzt. Wenn es nur genau ein Vorkommen gibt, dann ist es egal ob man ihn hinschreibt oder nicht. Ich finde es in dem Fall aber sinnvoller ihn wegzulassen. Du willst ja ganz explizit genau ein einziges Komma ersetzen, darum ist der g-Modifier inhaltlich wenig passend.
Use ed once in a while!

Antworten