Veröffentlicht 29. August 201114 j 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
29. August 201114 j 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
29. August 201114 j Autor $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
29. August 201114 j 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]
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.