Dateien mit Sed bearbeiten
Guten Morgen.
Ich muss viele Dateien für eine Datenmigration Nachbearbeiten und würde gerne dafür Sed benutzen.
Aufgabe: an Zeile 6 ein " anhängen/tauschen weil es dort fehlt. es wurden nur 256 Zeichen ausgelesen.
C:\>sed 6s/.\{1\}$/\"/ d:\P0249902.jpl liefert das gewünschte Ergebnis auf dem Monitor, aber wie schreibt er es zurück in die Datei?
C:\>sed 6s/.\{1\}$/\"/ d:\P0249902.jpl > d:\P0249902.jpl funktioniert nicht.
Ich muss viele Dateien für eine Datenmigration Nachbearbeiten und würde gerne dafür Sed benutzen.
Aufgabe: an Zeile 6 ein " anhängen/tauschen weil es dort fehlt. es wurden nur 256 Zeichen ausgelesen.
C:\>sed 6s/.\{1\}$/\"/ d:\P0249902.jpl liefert das gewünschte Ergebnis auf dem Monitor, aber wie schreibt er es zurück in die Datei?
C:\>sed 6s/.\{1\}$/\"/ d:\P0249902.jpl > d:\P0249902.jpl funktioniert nicht.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 196469
Url: https://administrator.de/forum/dateien-mit-sed-bearbeiten-196469.html
Ausgedruckt am: 10.04.2025 um 23:04 Uhr
15 Kommentare
Neuester Kommentar
Hallo,
um in eine Datei zu schreiben nutze die option -w
http://openbook.galileocomputing.de/shell_programmierung/shell_014_000. ...
Gruss
um in eine Datei zu schreiben nutze die option -w
http://openbook.galileocomputing.de/shell_programmierung/shell_014_000. ...
Gruss
Hallo,
das Sed Tutorial erklaert es doch ganz gut.
Aus Openbooks
So muesste das jetzt gehen.
C:\>sed 6s/.\{1\}$/\"/w d:\P0249902.jpl
Gruss
das Sed Tutorial erklaert es doch ganz gut.
Aus Openbooks
Das entsprechende Gegenstück zum Kommando r erhalten Sie mit dem Kommando w, mit
dem Sie das Ergebnis von sed in einer Datei speichern können:
dem Sie das Ergebnis von sed in einer Datei speichern können:
you@host > sed -n '/USA/w USA.dat' mrolympia.dat
you@host > cat USA.dat
Larry Scott USA 1965 1966
Sergio Oliva USA 1967 1968 1969
Chris Dickerson USA 1982
Lee Haney USA 1984 1985 1986 1987 1988 1989 1990 1991
Ronnie Coleman USA 1998 1999 2000 2001 2002 2003 2004
you@host > cat USA.dat
Larry Scott USA 1965 1966
Sergio Oliva USA 1967 1968 1969
Chris Dickerson USA 1982
Lee Haney USA 1984 1985 1986 1987 1988 1989 1990 1991
Ronnie Coleman USA 1998 1999 2000 2001 2002 2003 2004
So muesste das jetzt gehen.
C:\>sed 6s/.\{1\}$/\"/w d:\P0249902.jpl
Gruss
Hallo,
Ist ja Ploetzlich eine ganz Andere Aufgabenstellung!!
das ist naturlich klar das das nicht geht.
Weil Sed liest aus einer Datei... Du willst aber eine Datei nach sed reinschieben...
Nimm Dir Zeit und arbeite das Tutorial durch.
Das hilft Dir auf dauer nichts wenn ich Dir hier ne Loesung reinpruegel
die Du nicht verstehst.
Gruss
Ist ja Ploetzlich eine ganz Andere Aufgabenstellung!!
das ist naturlich klar das das nicht geht.
Weil Sed liest aus einer Datei... Du willst aber eine Datei nach sed reinschieben...
D:\Downloads\GetGnuWin32\bin>(<---das hier geht nicht!) sed 6s/.\{1\}$/\"/w d:\P0249902.jpl
Nimm Dir Zeit und arbeite das Tutorial durch.
Das hilft Dir auf dauer nichts wenn ich Dir hier ne Loesung reinpruegel
die Du nicht verstehst.
Gruss
Hallo Necroscope,
Machs so:
füge ein Caret ein (^)
getestet in der cmd unter XP und es funktioniert.
cu paulepank
EDIT:
Name der Ausgabedatei geändert
C:\>sed 6s/.\{1\}$/\"/ d:\P0249902.jpl liefert das gewünschte Ergebnis auf dem Monitor
aber mit SyntaxfehlerC:\>sed 6s/.\{1\}$/\"/ d:\P0249902.jpl > d:\P0249902.jpl funktioniert nicht.
wegen SyntaxfehlerMachs so:
füge ein Caret ein (^)
C:\>sed 6s/.\{1\}$/\^"/ d:\P0249902.jpl > d:\neuP0249902.jpl
getestet in der cmd unter XP und es funktioniert.
cu paulepank
EDIT:
Name der Ausgabedatei geändert
ja wieso kann ich das was auf dem Bildschirm richtig angezeigt wird nicht in eine Datei schreiben?
Weil Du die Ausgabe in eine Datei lenkst, die Du gerade als Input für sed nimmst.
würde ich jetzt vermuten.
lks
Hallo,
Hilfe dazu u.a. hier im Forum z.B. in einem Tutorial und vielen Beispielen.
Dein eigentliches Problem ist m.E. gelöst.
Deshalb setze diesen Thread als gelöst und bastle an deiner Lösung.
Falls du nicht weiterkommst, veröffentliche deinen Code mit der FOR-Schleife in einem neuen Thread.
Da kann dir dann weitergeholfen werden.
cu paulepank
jetzt bleibt nur noch die Frage wie man den Sed Befehl auf alle Dateien in dem Ordner loslässt.
mit einer FOR-Schleife.Hilfe dazu u.a. hier im Forum z.B. in einem Tutorial und vielen Beispielen.
Dein eigentliches Problem ist m.E. gelöst.
Deshalb setze diesen Thread als gelöst und bastle an deiner Lösung.
Falls du nicht weiterkommst, veröffentliche deinen Code mit der FOR-Schleife in einem neuen Thread.
Da kann dir dann weitergeholfen werden.
cu paulepank
Hallo,
diesen Thread dann bitte als gelöst markieren
und wozu 'ne Batch, da das Ganze doch ein einmaliger Vorgang ist.
Das kannst du alles in einer Zeile erledigen, die du uns wahrscheinlich in einem neuen Thread vorstellst.
cu paulepank
diesen Thread dann bitte als gelöst markieren
und wozu 'ne Batch, da das Ganze doch ein einmaliger Vorgang ist.
Das kannst du alles in einer Zeile erledigen, die du uns wahrscheinlich in einem neuen Thread vorstellst.
cu paulepank