• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] sed-Problem

Anscheinend wird nach dem "w <filename>" das } nicht erkannt.
s/..../0000/w datei2

Ich würde mal stark auf einen Parserfehler des sed tippen.

Haveaniceday
 
Na ich weiß nicht wie ich n, N und w interpretieren soll...
sed -n '/otto/{n;N;s/..../0000/w datei2}' datei1
für mich wäre das: ich behaupte mal Perl ist einfacher
Code:
perl -pe '/otto/ && { irgendwas; s/..../0000/; }' datei1 >datei2
 

regexer

Advanced Hacker
catweasel schrieb:
sed -n '/otto/{n;N;s/..../0000/w datei2}' datei1
(wenn ich jeden Befehl in eine neue Zeile schreibe, dann funktioniert es)
Bei manchen sed-Interpretern lässt sich die Klammerung mit {} nicht sinnvoll auf der Kommandozeile einsetzen. Mein man sed sagt zum Beispiel folgendes:
The terminating } must be preceded by a NEWLINE character and can be preceded or followed by <blank>s. The braces may be preceded or followed by <blank>s. The command may be preceded by <blank>s, but may not be followed by <blank>s.
Bei mir funktioniert es also nur so:
Code:
sed -n '/otto/{n;N;s/..../0000/w datei2
}' datei1
Es ist halt die Frage, ob man damit leben kann...
 
OP
C

catweasel

Hacker
damit kann ich leben.
Ich wollte nur wissen, ob es an mir liegt, was hier wohl ausnahmsweise nicht der Fall ist.
 

regexer

Advanced Hacker
catweasel schrieb:
damit kann ich leben.
Ich wollte nur wissen, ob es an mir liegt, was hier wohl ausnahmsweise nicht der Fall ist.
Oft muss man auch aufpassen, eckige und runde Klammern angeht. Die muss man beim gnu-sed durch Backslash maskieren. Das ist aber nicht bei allen sed-varianten der Fall, sodass die meisten howtos und tutorials darauf verzichten...
So bleibt manchmal nichts anderes übrig, als auszuprobieren.
 
Oben