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
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
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
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]
tennessee Geschrieben 30. August 2011 Autor Geschrieben 30. August 2011 Schönen Dank die Abgrenzungszeichen {} haben wir gefehlt.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden