{"id":53,"date":"2008-12-20T16:00:38","date_gmt":"2008-12-20T14:00:38","guid":{"rendered":"http:\/\/www.mediamill.de\/blog\/?p=53"},"modified":"2008-12-20T16:01:42","modified_gmt":"2008-12-20T14:01:42","slug":"variablen-bei-sed-ausdruecken","status":"publish","type":"post","link":"https:\/\/www.mediamill.de\/blog\/2008\/12\/20\/variablen-bei-sed-ausdruecken\/","title":{"rendered":"Variablen bei sed-Ausdr\u00fccken"},"content":{"rendered":"<p><strong>Problem:<\/strong> Beim Suchen und Ersetzen eines Strings in einer Textdatei mit dem Linux-Programm sed (Stream Editor) trat das Problem auf, dass bei der Verwendung von Shellvariablen als Suchmuster der gew\u00fcnschte Text, also der Wert der Variablen, nicht durch den Zieltext ersetzt wurde. Ein Test ohne Variablen funktionierte aber ohne Probleme.<\/p>\n<p class=\"codeblock\">sed &#8217;s\/suchmuster\/zieltext\/g&#8216; Eingabedatei &gt; Ausgabedatei<br \/>\nmv Ausgabedatei Eingabedatei<\/p>\n<p>ersetzte den Text &#8222;suchmuster&#8220; in der &#8222;Eingabedatei&#8220; mit dem Text &#8222;zieltext&#8220; und schrieb das Ergebnis in die &#8222;Ausgabedatei&#8220;.<\/p>\n<p>Folgendes funktionierte aber nicht:<\/p>\n<p class=\"codeblock\">suchmuster=&#8220;das ist der quelltext&#8220;<br \/>\nzieltext=&#8220;das ist der zieltext&#8220;<br \/>\nsed &#8217;s\/$suchmuster\/$zieltext\/g&#8216; Eingabedatei &gt; Ausgabedatei<br \/>\nmv Ausgabedatei Eingabedatei<\/p>\n<p>Der Text &#8222;das ist der quelltext&#8220; wurde nicht durch den Text &#8222;das ist der zieltext&#8220; ersetzt.<\/p>\n<p><strong>L\u00f6sung:<\/strong> Durch eine Suchmaschinenrecherche fand ich die L\u00f6sung. Sed wertet den Inhalt von Variablen nicht aus, wenn man einfache Anf\u00fchrungszeichen (&#8218;) beim Erstellen des Ausdrucks verwendet. Ersetzt man die einfachen Anf\u00fchrungszeichen durch doppelte Anz\u00fchrungszeichen (&#8222;), werden zuerst die Variablen expandiert und dann erst der Sed-Ausdruck ausgef\u00fchrt.<\/p>\n<p>Der funktionierende Code sah dann so aus:<\/p>\n<p class=\"codeblock\">suchmuster=&#8220;das ist der quelltext&#8220;<br \/>\nzieltext=&#8220;das ist der zieltext&#8220;<br \/>\nsed <strong>&#8222;<\/strong>s\/$suchmuster\/$zieltext\/g<strong>&#8222;<\/strong> Eingabedatei &gt; Ausgabedatei<br \/>\nmv Ausgabedatei Eingabedatei<\/p>\n<p>Quelle: <a title=\"Sed mit Shellvariablen\" href=\"http:\/\/www.unixboard.de\/vb3\/showthread.php?t=37032\" target=\"_blank\">http:\/\/www.unixboard.de<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Problem: Beim Suchen und Ersetzen eines Strings in einer Textdatei mit dem Linux-Programm sed (Stream Editor) trat das Problem auf, dass bei der Verwendung von Shellvariablen als Suchmuster der gew\u00fcnschte Text, also der Wert der Variablen, nicht durch den Zieltext ersetzt wurde. Ein Test ohne Variablen funktionierte aber ohne Probleme. sed &#8217;s\/suchmuster\/zieltext\/g&#8216; Eingabedatei &gt; Ausgabedatei [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[28,5,30,29,6,7],"tags":[],"class_list":["post-53","post","type-post","status-publish","format-standard","hentry","category-bash-snippets","category-linux","category-linux-befehle","category-textbearbeitung","category-tipps","category-unix-befehle"],"_links":{"self":[{"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/posts\/53","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/comments?post=53"}],"version-history":[{"count":16,"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/posts\/53\/revisions"}],"predecessor-version":[{"id":109,"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/posts\/53\/revisions\/109"}],"wp:attachment":[{"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/media?parent=53"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/categories?post=53"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/tags?post=53"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}