tennessee Geschrieben 29. August 2011 Geschrieben 29. August 2011 Hallo zusammen, kann mir bitte einer sagen was hier falsch ist? Ich möchte eine zeile komplett ersetzen. Die Zeilennummer soll mit $k representiert werden. sed '"$k"s=^.*$=das ist die neue Zeile mit Slash /= ' [/PHP] so bekomme ich diese Meldung: [PHP] sed: -e expression #1, char 1: unknown command: `"' so wiederum: sed "$ks=^.*$=das ist die neue Zeile mit Slash /= " [/PHP] bekomme ich die gleiche Meldung ich hab schon alles versuch mit \ qouten aber nichts hilft. kann mir bitte einer sagen was falsch ist? Besten Dank und Schöne Grüße Zitieren
Jejerod Geschrieben 29. August 2011 Geschrieben 29. August 2011 Hallo zusammen, kann mir bitte einer sagen was hier falsch ist? Ich möchte eine zeile komplett ersetzen. Die Zeilennummer soll mit $k representiert werden. Falls deine Quellzeile "$k" ist und diese mit ^.*$ matchen und gegen den String tauschen willst: sed steht für stream editor, arbeitet also auf einem Stream; nicht als stand-alone befehl. Deine zu ersetzende Zeile muss also in sed gepiped werden. user@host:~> echo '"$k"' | sed -e 's=^.*$=das ist die neue Zeile mit Slash /= ' das ist die neue Zeile mit Slash / [/PHP] oder [PHP] user@host:~> for i in 1 2 3 4 ; do echo $i >> quelltext ; done user@host:~> sed -e 's/^3$/Dies war mal Zeile Nummer Drei/' < quelltext 1 2 Dies war mal Zeile Nummer Drei 4 Zitieren
tennessee Geschrieben 29. August 2011 Autor Geschrieben 29. August 2011 $k ist die Zeilennummer die geändert werden soll vielleicht hätte ich das so schreiben sollen: sed '"$k"s=^.*$=das ist die neue Zeile mit Slash /= ' datei.txt > datei_neu.txt [/php es geht nur darum die Variable rein zu kriegen die mit einer for schleife gesetzt wird. wenn ich eine zeilennummer statt $k schreibe also bsp: 24s funktioniert der Befehl Zitieren
Jejerod Geschrieben 29. August 2011 Geschrieben 29. August 2011 Wenn du willst das $k expandiert wird, darfst du keine single quotes nutzen. Außerdem musst du $k gegen das s abgrenzen, also ${k}s benutzen - sonst sucht die shell nach der variable ks. user@host:~> k=3; sed -e "${k}s=^.*$=das ist die neue Zeile mit Slash /= " < quelltext 1 2 das ist die neue Zeile mit Slash / 4 [/php] Zitieren
tennessee Geschrieben 30. August 2011 Autor Geschrieben 30. August 2011 Schönen Dank die Abgrenzungszeichen {} haben wir gefehlt. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.