{"id":8255,"date":"2021-07-29T19:47:49","date_gmt":"2021-07-29T19:47:49","guid":{"rendered":"https:\/\/profi-tutorials.de\/linux\/?p=8255"},"modified":"2021-08-25T10:08:02","modified_gmt":"2021-08-25T10:08:02","slug":"befehl-sed","status":"publish","type":"post","link":"https:\/\/profi-tutorials.de\/linux\/administration\/befehl-sed\/","title":{"rendered":"Der Befehl sed"},"content":{"rendered":"<p>Bei sed handelt es sich um einen sogenannten &ldquo;<strong>s<\/strong>tream <strong>ed<\/strong>itor&rdquo;, welcher verwendet wird, um grundlegende Texttransformationen an einem Eingabestrom vorzunehmen. Zwar &auml;hnelt sed in mancher Hinsicht einem Editor, der skriptgesteuerte Bearbeitungen erlaubt (z.B. ed), so arbeitet er lediglich mit einem Durchlauf des Eingabestroms &ndash; dies macht sed effizienter. Insbesondere die F&auml;higkeit, Text in einer Pipeline zu filtern, hebt sed jedoch von anderen Arten von Editoren ab.<\/p>\n<p>In diesem Beitrag werden Sie zun&auml;chst die grundlegende Anwendung des Befehls kennenlernen. Anschlie&szlig;end folgen die wichtigsten Optionen des Befehls sowie einige Grundlagen zu sed-Skripten.<\/p>\n<h2 id=\"t-1627306636797\">Allgemeine Syntax<\/h2>\n<p>Die allgemeine <a class=\"glossaryLink cmtt_Allgemein cmtt_Informatik\" aria-describedby=\"tt\" data-cmtooltip=\"&lt;div class=glossaryItemTitle&gt;Syntax&lt;\/div&gt;&lt;div class=glossaryItemBody&gt;&#8203;Im  Allgemeinen wird unter Syntax ein Regel&#8203;system verstanden, welches zur  Kombination elementarer Zeichen zu zusammengesetzten &#8203;Zeichen in (...)&lt;\/div&gt;\" href=\"https:\/\/profi-tutorials.de\/linux\/glossar\/syntax\/\" target=\"_blank\" data-mobile-support=\"0\" data-gt-translate-attributes='[{\"attribute\":\"data-cmtooltip\", \"format\":\"html\"}]' tabindex=\"0\" role=\"link\">Syntax<\/a> des Befehls <strong>sed <\/strong>lautet folgenderma&szlig;en:<\/p>\n<pre>sed [Optionen] [Skript] [Datei]<\/pre>\n<p>Wird keine Datei in den Argumenten des Befehls spezifiziert, oder wurde anstelle eines Dateinamens <strong>&ldquo;-&ldquo;<\/strong> angegeben, so filtert <strong>sed <\/strong>den Inhalt des Standard-Input <strong>stdin<\/strong>. Ausgaben werden standardm&auml;&szlig;ig in den Standard-Output <strong>stdout<\/strong> geschrieben &ndash; siehe die <strong>Option -i<\/strong> f&uuml;r In-Place Bearbeitung. Weiterhin wird standardm&auml;&szlig;ig die komplette verarbeitete Eingabe, mit Ausnahme solcher Zeilen die von Kommandos wie <strong>&ldquo;d&rdquo;<\/strong> bearbeitet oder gel&ouml;scht wurden, ausgegeben. Die <strong>Option -n<\/strong> kann jedoch verwendet werden, um die Ausgabe zu unterdr&uuml;cken &ndash; mit dem Kommando <strong>&ldquo;p&rdquo;<\/strong> k&ouml;nnen dann nur spezifische Zeilen ausgegeben werden.<\/p>\n<p><strong>sed <\/strong>behandelt standardm&auml;&szlig;ig den ersten nicht-Options-Parameter als Skript und alle folgenden nicht-Options-Parameter als Eingabedateien. Werden mehrere Dateien angegeben, so werden diese von <strong>sed <\/strong>wie ein langer Eingabestrom behandelt.<\/p>\n<h2 id=\"t-1627306636798\">Wichtige Optionen<\/h2>\n<p>Im Folgenden werden Ihnen zun&auml;chst einige der wichtigsten Optionen des Befehls <strong>sed <\/strong>vorgestellt.<\/p>\n<h3 id=\"t-1627306636800\">-n &ndash; Automatische Ausgabe unterdr&uuml;cken<\/h3>\n<p>Mithilfe der <strong>Option -n<\/strong> wird die standardm&auml;&szlig;ige Ausgabe der verarbeiteten Eingabe am Ende eines Skript-Durchlaufs deaktiviert. <strong>sed <\/strong>gibt dann nur etwas aus, wenn es explizit mit dem <strong>Kommando &ldquo;p&rdquo;<\/strong> dazu aufgefordert wird:<\/p>\n<pre>sed -n [Skript] [Datei]<\/pre>\n<h3 id=\"t-1627306636801\">-e &ndash; Skript hinzuf&uuml;gen<\/h3>\n<p>Die im &uuml;bergebenen Skript enthaltenen Kommandos werden an die Menge der Kommandos, die w&auml;hrend der Eingabeverarbeitung ausgef&uuml;hrt werden sollen, angeh&auml;ngt:<\/p>\n<pre>sed -e [Skript] [Skript] [Datei]<\/pre>\n<h3 id=\"t-1627306636802\">-f &ndash; Skriptdatei hinzuf&uuml;gen<\/h3>\n<p>Die im Inhalt der &uuml;bergebenen Datei enthaltenen Kommandos werden an die Menge der Kommandos, die w&auml;hrend der Eingabeverarbeitung ausgef&uuml;hrt werden sollen, angeh&auml;ngt:<\/p>\n<pre>sed -f [Skriptdatei] [Skript] [Datei]<\/pre>\n<h3 id=\"t-1627306636803\">-i &ndash; In-Place-Bearbeitung<\/h3>\n<p>Mit der <strong>Option -i<\/strong> k&ouml;nnen Sie die In-Place-Bearbeitung aktivieren. <strong>sed <\/strong>erzeugt hierbei eine tempor&auml;re Datei und schreibt seine Ausgaben dorthin. Wenn das Ende der Eingabedatei erreicht ist, wird die tempor&auml;re Datei in den Namen der urspr&uuml;nglichen Eingabedatei umbenannt. Optional kann ein Suffix &uuml;bergeben werden, welcher vor der Umbenennung der tempor&auml;ren Datei verwendet wird, um die Eingabedatei umzubenennen &ndash; so entsteht eine <strong>Sicherungskopie<\/strong><strong>der Originaldatei<\/strong>. Sind im Suffix keine <strong>Sterne <\/strong><strong>&ldquo;*&rdquo;<\/strong> enthalten, so wird er an das Ende des aktuellen Dateinamen angeh&auml;ngt. Sind jedoch ein oder mehrere <strong>Sterne &ldquo;*&rdquo;<\/strong> enthalten, so wird stattdessen jedes Stern-Vorkommnis durch den Namen der aktuellen Datei ausgetauscht. Auf diesem Weg wird es m&ouml;glich, einen Pr&auml;fix voranzustellen, oder Sicherheitskopien in anderen (bereits existierenden) Verzeichnissen abzulegen. Die Sicherungskopie wird erstellt, unabh&auml;ngig davon, ob tats&auml;chlich eine &Auml;nderung vorgenommen wurde. Wird kein Suffix &uuml;bergeben, so wird die Originaldatei ohne Erstellung einer Sicherheitskopie &uuml;berschrieben.<\/p>\n<pre>sed -i[Suffix] [Skript] [Datei]<\/pre>\n<p>Die <strong>Option -s<\/strong> wird impliziert.<\/p>\n<p>Bei Verwendung der <strong>Option -i<\/strong> in Kombination mit der <strong>Option -n<\/strong> sollten Sie besondere Vorsicht walten lassen, da die Ausgabedatei bei fehlerhafter Anwendung leer sein k&ouml;nnte.<\/p>\n<h3 id=\"t-1627306636804\">-l &ndash; Zeilenumbruchl&auml;nge spezifizieren<\/h3>\n<p>Die <strong>Option -l<\/strong> wird verwendet, um die Standardl&auml;nge des Zeilenumbruchs f&uuml;r das <strong>Kommando &ldquo;l&rdquo;<\/strong> zu spezifizieren. W&auml;hrend eine L&auml;nge von 0 bedeutet, dass lange Zeilen nie umgebrochen werden, wird bei nicht spezifizierter Zeilenumbruchl&auml;nge standardm&auml;&szlig;ig der Wert 70 verwendet.<\/p>\n<pre>sed -l [L&auml;nge] [Skript] [Datei]<\/pre>\n<h3 id=\"t-1627306636805\">&ndash;posix &ndash; Keine GNU-Erweiterungen<\/h3>\n<p>Im Vergleich zum <strong>POSIX-sed<\/strong> beinhaltet <strong>GNU-sed<\/strong> einige Erweiterungen wie etwa zus&auml;tzliche Kommandos &ndash; diese k&ouml;nnen mithilfe der <strong>Option &ndash;posix<\/strong> deaktiviert werden, um die Entwicklung portabler Skripte zu vereinfachen:<\/p>\n<pre>sed --posix [Skript] [Datei]<\/pre>\n<h3 id=\"t-1627306636806\">-E &ndash; Erweiterte regul&auml;re Ausdr&uuml;cke<\/h3>\n<p>Anstelle grundlegender regul&auml;rer Ausdr&uuml;cke werden bei Verwendung der <strong>Option -E<\/strong> erweiterte <a class=\"glossaryLink cmtt_Informatik\" aria-describedby=\"tt\" data-cmtooltip=\"&lt;div class=glossaryItemTitle&gt;Regex [Regular Expression]&lt;\/div&gt;&lt;div class=glossaryItemBody&gt;Regul&auml;re Ausdr&uuml;cke (engl. regular expression, regex) sind spezielle Zeichenketten, die ein Suchmuster definieren.&lt;\/div&gt;\" href=\"https:\/\/profi-tutorials.de\/linux\/glossar\/regex\/\" target=\"_blank\" data-mobile-support=\"0\" data-gt-translate-attributes='[{\"attribute\":\"data-cmtooltip\", \"format\":\"html\"}]' tabindex=\"0\" role=\"link\">regul&auml;re Ausdr&uuml;cke<\/a> verwendet. Es handelt sich um solche regul&auml;ren Ausdr&uuml;cke, wie auch der Befehl <a href=\"https:\/\/profi-tutorials.de\/linux\/grundlagen\/befehl-egrep\/\" style=\"outline: none;\" target=\"_blank\" rel=\"noopener\">egrep <\/a>sie akzeptiert:<\/p>\n<pre>sed -E [Skript] [Datei]<\/pre>\n<h3 id=\"t-1627306636807\">-s &ndash; Dateien einzeln behandeln<\/h3>\n<p>Das Standard-Verhalten, bei welchem mehrere spezifizierte Dateien wie ein langer Eingabestrom behandelt werden, kann mit der <strong>Option -s<\/strong> &ndash; welche eine GNU-Erweiterung darstellt &ndash; umgestellt werden. Dateien werden dann einzeln behandelt. Bereichsadressen d&uuml;rfen hierbei nicht Dateigrenzen &uuml;berschreiten &ndash; zudem sind Zeilennummern relativ zum Anfang- und das <strong>Sonderzeichen &ldquo;$&rdquo;<\/strong> verweist jeweils auf das Ende jeder zu verarbeitenden Datei.<\/p>\n<pre>sed -s [Skript] [Datei]<\/pre>\n<h3 id=\"t-1627306636808\">&ndash;sandbox &ndash; Sandbox-Modus<\/h3>\n<p>Im Sandbox-Modus werden Skripte, die die <strong>Kommandos &ldquo;e&rdquo;<\/strong>, <strong>&ldquo;w&rdquo;<\/strong> oder <strong>&ldquo;r&rdquo;<\/strong> beinhalten, vor der Ausf&uuml;hrung abgebrochen. Der Modus stellt sicher, dass <strong>sed <\/strong>nur mit den auf der Befehlszeile angegebenen Eingabedateien arbeitet und keine externen Programme ausf&uuml;hren kann.<\/p>\n<pre>sed --sandbox [Skript] [Datei]<\/pre>\n<h3 id=\"t-1627306636809\">-u &ndash; Ein- und Ausgabe minimal puffern<\/h3>\n<p>Wird die <strong>Option -u<\/strong> verwendet, so puffert <strong>sed <\/strong>sowohl die Eingabe als auch die Ausgabe so minimal wie m&ouml;glich. Die Option ist insbesondere dann n&uuml;tzlich, wenn die Eingabe von einem Befehl wie <strong>&ldquo;tail -f&rdquo;<\/strong> stammt und ihre transformierte Form so schnell wie m&ouml;glich angezeigt werden soll.<\/p>\n<pre>sed -u [Skript] [Datei]<\/pre>\n<h3 id=\"t-1627306636810\">-z &ndash; Null-Terminierung verwenden<\/h3>\n<p>Bei Verwendung der <strong>Option -z<\/strong> werden Zeilen nicht mit dem standardm&auml;&szlig;igen Zeilenumbruch, sondern mit <strong>ASCII-NUL<\/strong> terminiert. Die Option l&auml;sst sich gut mit Befehlen wie <strong>&ldquo;sort -z&rdquo;<\/strong> oder <strong>&ldquo;find -print0&rdquo;<\/strong> kombinieren, um beliebige Dateinamen zu verarbeiten.<\/p>\n<pre>sed -z [Skript] [Datei]<\/pre>\n<h2 id=\"t-1627567751587\">sed-Skripte<\/h2>\n<p><strong>sed<\/strong>-Skripte bestehen aus einem oder mehreren <strong>sed<\/strong>-Kommandos, die entweder einer oder mehreren <strong>-e<\/strong> und <strong>-f<\/strong> Optionen, oder als erstes nicht-Options Argument &uuml;bergeben werden, wenn keine der Optionen in Verwendung ist. Mehrere in einem Skript oder eine Skript-Datei befindliche <strong>sed<\/strong>-Kommandos werden dabei mithilfe von <strong>Semikola &ldquo;;&rdquo;<\/strong> oder Linefeeds (ASCII 10) getrennt.<\/p>\n<p>Ein <strong>sed<\/strong>-Kommando hat die folgende Syntax:<\/p>\n<pre>[Adresse]X[Optionen]<\/pre>\n<p>X stellt hierbei ein aus einem Buchstaben bestehendes <strong>sed<\/strong>-Kommando dar. <strong>&ldquo;[Adresse]&rdquo;<\/strong> ist eine optionale Zeilenangabe, wobei es sich um eine einzelne Zeilennummer, einen regul&auml;ren Ausdruck oder eine Zeilen-Bereichsangabe handeln kann. Bei Angabe von <strong>&ldquo;[Adresse]&rdquo;<\/strong> wird das Kommando X ausschlie&szlig;lich auf den &uuml;bereinstimmenden Zeilen ausgef&uuml;hrt wird. Schlie&szlig;lich verwenden einige <strong>sed<\/strong>-Kommandos zus&auml;tzliche <strong>&ldquo;[Optionen]&rdquo;<\/strong>.<\/p>\n<p>Aufgrund ihrer Syntax k&ouml;nnen die <strong>sed<\/strong><strong>-Kommandos<\/strong> <strong>a<\/strong>, <strong>c<\/strong> und <strong>i<\/strong> nicht von Semikola <strong>&ldquo;;&rdquo;<\/strong> gefolgt werden. Sie sollten aus diesem Grund mit Linefeeds terminiert, oder an das Ende eines Skripts bzw. einer Skript-Datei gestellt werden.<\/p>\n<p>W&auml;hrend <strong>sed<\/strong> eine Datei zeilenweise liest, werden die jeweils eingelesenen Zeilen tempor&auml;r in den sogenannten Pattern-Space geladen. Dieses Verhalten ist wichtig f&uuml;r das Verst&auml;ndnis einiger <strong>sed<\/strong>-Kommandos, von denen im Folgenden nun einige der Wichtigsten vorgestellt werden:<\/p>\n<h3 id=\"t-1627896462674\">a &ndash; Text an Zeilenende anh&auml;ngen<\/h3>\n<p>Das <strong>Kommando &ldquo;a&rdquo;<\/strong> wird verwendet, um eine mit <strong>&ldquo;[Text]&rdquo;<\/strong> spezifizierte <a class=\"glossaryLink cmtt_Allgemein cmtt_Informatik\" aria-describedby=\"tt\" data-cmtooltip=\"&lt;div class=glossaryItemTitle&gt;String&lt;\/div&gt;&lt;div class=glossaryItemBody&gt;Ein String ist in der Informatik eine Zeichenkette - stellt also eine endliche Folge von Zeichen aus einem bestimmten Zeichensatz,(...)&lt;\/div&gt;&lt;div class=cmtt_synonyms_wrapper&gt;&lt;div class=cmtt_synonyms_title&gt;Synonyms: &lt;\/div&gt;&lt;div class=cmtt_synonyms&gt;Zeichenkette&lt;\/div&gt;&lt;\/div&gt;\" href=\"https:\/\/profi-tutorials.de\/linux\/glossar\/string\/\" target=\"_blank\" data-mobile-support=\"0\" data-gt-translate-attributes='[{\"attribute\":\"data-cmtooltip\", \"format\":\"html\"}]' tabindex=\"0\" role=\"link\">Zeichenkette<\/a> an das Ende einer Zeile anzuh&auml;ngen:<\/p>\n<pre>a [Text]<\/pre>\n<h3 id=\"t-1627896462675\">c &ndash; Zeilen mit Text ersetzen<\/h3>\n<p>Wenn Sie Zeilen mit einer bestimmten Zeichenkette <strong>&ldquo;[Text]&rdquo;<\/strong> ersetzen m&ouml;chten, verwenden Sie dazu das <strong>Kommando &ldquo;c&rdquo;<\/strong>:<\/p>\n<pre>c [Text]<\/pre>\n<h3 id=\"t-1627896462676\">d &ndash; Pattern-Space l&ouml;schen<\/h3>\n<p>Mit dem <strong>Kommando &ldquo;d&rdquo;<\/strong> kann der Pattern-Space gel&ouml;scht werden. <strong>sed <\/strong>setzt sofort mit dem n&auml;chsten Zyklus fort.<\/p>\n<pre>d<\/pre>\n<h3 id=\"t-1627896462677\">g &ndash; Pattern-Space mit &ldquo;Hold&rdquo; ersetzen<\/h3>\n<p>Mithilfe des <strong>Kommandos &ldquo;g&rdquo;<\/strong> wird der Pattern-Space mit dem Inhalt des sogenannten Hold-Space ersetzt:<\/p>\n<pre>g<\/pre>\n<h3 id=\"t-1627896462678\">G &ndash; &ldquo;Hold&rdquo; an Pattern-Space anh&auml;ngen<\/h3>\n<p>Das Kommando h&auml;ngt einen Linefeed sowie darauffolgend die Inhalte des Hold-Space an den Pattern-Space an.<\/p>\n<pre>G<\/pre>\n<h3 id=\"t-1627896462679\">h &ndash; &ldquo;Hold&rdquo; mit Pattern-Space ersetzen<\/h3>\n<p>Ersetzt die Inhalte des Hold-Space mit den Inhalten des Pattern-Space.<\/p>\n<pre>h<\/pre>\n<h3 id=\"t-1627896462680\">H &ndash; Pattern-Space an &ldquo;Hold&rdquo; anh&auml;ngen<\/h3>\n<p>H&auml;ngt einen Linefeed und darauffolgend die Inhalte des Pattern-Space an das Ende des Hold-Space an.<\/p>\n<pre>H<\/pre>\n<h3 id=\"t-1627896462681\">i &ndash; Text vor Zeile einf&uuml;gen<\/h3>\n<p>Mit des <strong>Kommandos &ldquo;i&rdquo;<\/strong> kann eine angegebene Zeichenkette <strong>&ldquo;[Text]&rdquo;<\/strong> vor einer Zeile eingef&uuml;gt werden:<\/p>\n<pre>i [Text]<\/pre>\n<h3 id=\"t-1627896462682\">n &ndash; Mit n&auml;chster Zeile fortfahren<\/h3>\n<p>Wenn die automatische Ausgabe nicht deaktiviert wurde, wird mit diesem Kommando der Pattern-Space. Anschlie&szlig;end wird, unabh&auml;ngig von der automatischen Ausgabe, der Inhalt des Pattern-Space mit der n&auml;chsten Eingabezeile ersetzt. Wenn keine weiteren Eingaben vorliegen, wird <strong>sed <\/strong>ohne Verarbeitung weiterer Kommandos beendet.<\/p>\n<pre>n<\/pre>\n<h3 id=\"t-1627896462683\">N &ndash; Mit n&auml;chster Zeile fortfahren (LF)<\/h3>\n<p>F&uuml;gt einen Linefeed sowie anschlie&szlig;end die n&auml;chste Eingabezeile an das Ende des Pattern-Space an. Wenn keine weiteren Eingaben verf&uuml;gbar sind, wird <strong>sed <\/strong>ohne Verarbeitung weiterer Kommandos beendet.<\/p>\n<pre>N<\/pre>\n<h3 id=\"t-1627896462684\">p &ndash; Pattern-Space ausgeben<\/h3>\n<p>Das <strong>Kommando &ldquo;p&rdquo;<\/strong> gibt den Inhalt des Pattern-Space aus.<\/p>\n<pre>p<\/pre>\n<h3 id=\"t-1627896462685\">P &ndash; Pattern-Space bis LF ausgeben<\/h3>\n<p>Mithilfe des <strong>Kommando &ldquo;P&rdquo;<\/strong> kann der Pattern-Space bis zum ersten Linefeed ausgegeben werden.<\/p>\n<pre>P<\/pre>\n<h3 id=\"t-1627896462686\">q &ndash; Exit<\/h3>\n<p>Das <strong>Kommando &ldquo;q&rdquo;<\/strong> beendet <strong>sed <\/strong>mit dem angegebenen Exit-Status, wobei die Inhalte des Pattern-Space zuvor ausgegeben werden. Es werden keine weiteren Kommandos oder Eingaben verarbeitet.<\/p>\n<pre>q[Exit-Status]<\/pre>\n<h3 id=\"t-1627896462687\">Q &ndash; Exit ohne Ausgabe<\/h3>\n<p>Das <strong>Kommando &ldquo;Q&rdquo;<\/strong> funktioniert weitgehend analog wie <strong>&ldquo;q&rdquo;<\/strong>, gibt jedoch die Inhalte des Pattern-Space vor der Beendigung nicht aus.<\/p>\n<pre>Q[Exit-Status]<\/pre>\n<h3 id=\"t-1627896462688\">s\/regexp\/replacement\/[flags]<\/h3>\n<p>Dieses Kommando wird verwendet, um den angegeben regul&auml;ren Ausdruck (<strong>&ldquo;<a class=\"glossaryLink cmtt_Informatik\" aria-describedby=\"tt\" data-cmtooltip=\"&lt;div class=glossaryItemTitle&gt;Regex [Regular Expression]&lt;\/div&gt;&lt;div class=glossaryItemBody&gt;Regul&auml;re Ausdr&uuml;cke (engl. regular expression, regex) sind spezielle Zeichenketten, die ein Suchmuster definieren.&lt;\/div&gt;\" href=\"https:\/\/profi-tutorials.de\/linux\/glossar\/regex\/\" target=\"_blank\" data-mobile-support=\"0\" data-gt-translate-attributes='[{\"attribute\":\"data-cmtooltip\", \"format\":\"html\"}]' tabindex=\"0\" role=\"link\">regexp<\/a>&rdquo;<\/strong>) mit dem Inhalt des Pattern-Space zu vergleichen und &uuml;bereinstimmende Zeichenketten im Pattern-Space mit der Zeichenkette <strong>&ldquo;replacement&rdquo;<\/strong> zu ersetzen. (Substitution) Standardm&auml;&szlig;ig wird nur die erste &Uuml;bereinstimmung ersetzt.<\/p>\n<p>Die Zeichenkette <strong>&ldquo;replacement&rdquo;<\/strong> kann Referenzen im Format <strong>&ldquo;n&rdquo;<\/strong> enthalten, die jeweils die Anteile des Match referenzieren, die zwischen dem n-ten <strong>&ldquo;(&ldquo;<\/strong> und seinem zugeh&ouml;rigen <strong>&ldquo;)&rdquo;<\/strong> (sogenannten Capture-Groups) liegen, wobei <strong>&ldquo;n&rdquo;<\/strong> eine Ziffer 0-9 ist. Weiterhin d&uuml;rfen im <strong>&ldquo;replacement&rdquo;<\/strong> auch nicht-maskierte <strong>&ldquo;&amp;&rdquo;<\/strong>-Zeichen enthalten sein, die dann den gesamten &uuml;bereinstimmenden Anteil des Pattern-Space referenzieren.<\/p>\n<p>Die <strong>&ldquo;\/&rdquo;<\/strong>-Zeichen k&ouml;nnen innerhalb eines beliebigen <strong>s-Kommandos<\/strong> einheitlich durch ein einzelnes beliebiges anderes Zeichen ersetzt werden. In den Zeichenketten <strong>&ldquo;regexp&rdquo;<\/strong> und <strong>&ldquo;replacement&rdquo;<\/strong> kann das <strong>&ldquo;\/&rdquo;<\/strong>-Zeichen, oder ein anderes anstelle dessen verwendetes Zeichen, nur verwendet werden, wenn ihm ein <strong>&ldquo;&rdquo;<\/strong>-Zeichen vorangestellt wird.<\/p>\n<pre>s\/[regexp]\/[replacement]\/[flags]<\/pre>\n<p>Das <strong>s-Kommando<\/strong> kann optional von einem oder mehreren Flags gefolgt werden:<\/p>\n<table data-rows=\"8\" data-cols=\"2\" data-v=\"middle\">\n<thead>\n<tr>\n<th style=\"\"><strong>Flag<\/strong><\/th>\n<th style=\"\">Funktion<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td data-th=\"Flag\" style=\"\">g<\/td>\n<td data-th=\"Funktion\" style=\"\">Die Substitution wird auf allen &Uuml;bereinstimmungen vorgenommen.<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Flag\" style=\"\">[Nummer]<\/td>\n<td data-th=\"Funktion\" style=\"\">Nur die n-te &Uuml;bereinstimmung wird substituiert. Im POSIX-Standard wird kein Verhalten im Falle der Kombination mit dem Flag &ldquo;g&rdquo; spezifiziert. Beim GNU-sed werden alle &Uuml;bereinstimmungen vor der n-ten ignoriert und alle darauffolgenden substituiert.<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Flag\" style=\"\">p<\/td>\n<td data-th=\"Funktion\" style=\"\">Wenn die Substitution durchgef&uuml;hrt wurde, wird der neue Pattern-Space ausgegeben.<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Flag\" style=\"\">w [Dateiname]<\/td>\n<td data-th=\"Funktion\" style=\"\">Wenn die Substitution durchgef&uuml;hrt wurde, wird der neue Pattern-Space in die angegebene Datei geschrieben. (GNU-Erweiterung)<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Flag\" style=\"\" rowspan=\"1\" colspan=\"1\">e<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Erlaubt es die Eingabe eines Shell-Befehls in den Pattern-Space zu leiten. Wenn eine Substitution durchgef&uuml;hrt wurde, wird der Befehl aus dem Pattern-Space ausgef&uuml;hrt und der Pattern-Space mit der jeweiligen Ausgabe ersetzt. Ein nachfolgender Zeilenumbruch wird unterdr&uuml;ckt. Wenn der auszuf&uuml;hrende Befehl ein NUL-Zeichen enth&auml;lt, sind die Ergebnisse undefiniert. (GNU-Erweiterung)<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Flag\" style=\"\" rowspan=\"1\" colspan=\"1\">i<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Das &ldquo;i&rdquo;-Flag f&uuml;hrt dazu, dass sed die Gro&szlig; und Kleinschreibung ignoriert (case-insensitive). (GNU-Erweiterung)<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Flag\" style=\"\" rowspan=\"1\" colspan=\"1\">m<\/td>\n<td data-th=\"Funktion\" style=\"\" rowspan=\"1\" colspan=\"1\">Das &ldquo;m&rdquo;-Flag f&uuml;hrt dazu, dass sed im Mehrzeilen-Modus nach &Uuml;bereinstimmungen sucht. (GNU-Erweiterung)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 id=\"t-1627896462689\">x &ndash; &ldquo;Hold&rdquo; \/ Pattern-Space tauschen<\/h3>\n<p>Mithilfe des <strong>Kommando &ldquo;x&rdquo;<\/strong><strong>&#8203;<\/strong> lassen sich die Inhalte von Hold- und Pattern-Space tauschen.<\/p>\n<pre>x<\/pre>\n<h3 id=\"t-1627896462690\">z &ndash; Pattern-Space leeren<\/h3>\n<p>Dieses Kommando leert den Inhalt des Pattern-Space.<\/p>\n<pre>z<\/pre>\n<h3 id=\"t-1627896462691\"># &ndash; Kommentar<\/h3>\n<p>Mit <strong>&ldquo;#&rdquo;<\/strong> wird ein Kommentar eingeleitet, welcher bis zum Ende der aktuellen Zeile bzw. bis zum n&auml;chsten Linefeed reicht.<\/p>\n<pre>#[Kommentar]<\/pre>\n<h2 id=\"t-1627306636811\">Exit-Status<\/h2>\n<p>Die folgenden <strong>Exit-Status<\/strong> werden von <strong>sed <\/strong>zur&uuml;ckgegeben:<\/p>\n<table data-rows=\"5\" data-cols=\"2\" data-v=\"middle\">\n<thead>\n<tr>\n<th style=\"\"><strong>Operator<\/strong><\/th>\n<th style=\"\">Funktion<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td data-th=\"Operator\" style=\"\">0<\/td>\n<td data-th=\"Funktion\" style=\"\">Ausf&uuml;hrung erfolgreich<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator\" style=\"\">1<\/td>\n<td data-th=\"Funktion\" style=\"\">Entweder ung&uuml;ltiges Kommando, ung&uuml;ltige Syntax, ung&uuml;ltiger regul&auml;rer Ausdruck oder ein GNU-Erweiterungsbefehl, der mit &ndash;posix verwendet wurde<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator\" style=\"\">2<\/td>\n<td data-th=\"Funktion\" style=\"\">Eine oder mehrere der auf auf der Befehlszeile angegebenen Eingabedateien konnte nicht ge&ouml;ffnet wird<\/td>\n<\/tr>\n<tr>\n<td data-th=\"Operator\" style=\"\">4<\/td>\n<td data-th=\"Funktion\" style=\"\">Es ist ein I\/O- oder schwerwiegender Verarbeitungsfehler aufgetreten, GNU sed bricht sofort ab<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: center;\">Abonniere JETZT unseren Newsletter!<\/p>\n<p style=\"text-align: center;\">Verpasse nie wieder <strong>neue<\/strong> Beitr&auml;ge und <strong>exklusive Insider-Only-Inhalte!<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bei sed handelt es sich um einen sogenannten &#8220;stream editor&#8221;, welcher verwendet wird, um grundlegende Texttransformationen an einem Eingabestrom vorzunehmen. Zwar \u00e4hnelt sed in mancher Hinsicht einem Editor, der skriptgesteuerte Bearbeitungen erlaubt (z.B. ed), so arbeitet er lediglich mit einem Durchlauf des Eingabestroms &#8211; dies macht sed effizienter. Insbesondere die F\u00e4higkeit, Text in einer Pipeline [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":9497,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"%%post_title%% %%sep%% %%sitetitle%%","_seopress_titles_desc":"Lernen Sie die Funktion des Befehls sed unter UNIX-\/Linux-Systemen im Detail kennen. Mit sed k\u00f6nnen Sie einfache Textbearbeitung auf einem Eingabestrom vornehmen.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"8","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":301,"_seopress_analysis_target_kw":"UNIX,Linux,Befehl,Befehle,Option,Optionen,Betriebssystem,Betriebssysteme,Betriebssystemen,Syntax,Beispiel,Beispiele,Tutorial,Tutorials,Profi-Tutorials,Profi-Tutorials.de,sed,stream editor,stream,editor,Text,Texte","footnotes":""},"categories":[8],"tags":[],"class_list":["post-8255","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administration"],"_links":{"self":[{"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts\/8255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/comments?post=8255"}],"version-history":[{"count":389,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts\/8255\/revisions"}],"predecessor-version":[{"id":9499,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/posts\/8255\/revisions\/9499"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/media\/9497"}],"wp:attachment":[{"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/media?parent=8255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/categories?post=8255"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/profi-tutorials.de\/linux\/wp-json\/wp\/v2\/tags?post=8255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}