linux:sed

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
linux:sed [2019/05/06 16:04] – [SED Beispiele] michaellinux:sed [2019/05/27 16:10] (current) – [Weiteres] michael
Line 1: Line 1:
-====== SED ======+====== Sed ======
  
 +**sed (von stream editor)** ist ein nicht-interaktiver Texteditor für die Verwendung auf der Kommandozeile oder in Skripten. sed zählt zu den "Urgesteinen" in der Unix- / Linux-Welt und ist quasi in jeder Linux-Installation (auch Minimalinstallationen) enthalten.
  
-===== SED Beispiele =====+===== Grundlagen sed ===== 
 + 
 + 
 +<WRAP center box 100%> 
 +==== Sed Syntax ==== 
 + 
 +<code># sed [Optionen] sed-Skript [Textdatei...]</code> oder 
 + 
 +<code># sed [Optionen] [-e sed-Skript | -f Skriptdatei] [Textdatei...] </code> 
 + 
 +Das Ergebnis wird auf der Standardausgabe ausgegeben. Wird keine Datei angegeben, so wird die Standardeingabe verwendet. Die Syntax von sed-Skripten findet man in der info-Seite von sed oder über die Links am Ende des Artikels. sed-Skripte verwenden reguläre Ausdrücke ähnlich denen von grep. Es ist empfehlenswert, sed-Skripte durch Hochkommas (') zu schützen, damit die Shell Sonderzeichen nicht selbst auswertet. 
 +</WRAP> 
 + 
 +---- 
 + 
 +<WRAP center box 100%> 
 +==== Sed Parameter ==== 
 + 
 +Diese Parameterliste ist unvollständig. Weiteres findet sich in der man-page von sed. 
 + 
 +^ Kurzform           ^ Langform             ^ Beschreibung                                                                                                        ^ 
 +| -n                 | --quiet, --silent    | Verhindert das automatische Ausgeben des Ergebnisses. Ausgaben erfolgen nur über das Kommando p.                    | 
 +| -e Skript          | --expression=Skript  | Angeben eines sed-Skriptes, mehrere sed-Skripte sind möglich. Bei nur einem sed-Skript kann -e weggelassen werden. 
 +| -f Skriptdatei     | --file=Skriptdatei   | Das sed-Skript steht in der Skriptdatei, nicht auf der Kommandozeile.                                               | 
 +| -i                 | --in-place           | Die Textdatei wird verändert, anstatt das Ergebnis auf Standardausgabe auszugeben.                                  | 
 + 
 + 
 +</WRAP> 
 + 
 + 
 +<WRAP center round important 100%> 
 +Bei der Ausgabe in eine Datei darf die Zieldatei nicht mit der Quelldatei identisch sein, denn bei der Ausführung eines einfachen Redirektors würde „sed“ die Datei zuerst löschen und dann neu anlegen, die Datei wäre leer. Mit der Option [-i] --in-place wird keine Ausgabe erzeugt, sondern gleich die Quelldatei bearbeitet. 
 +</WRAP> 
 + 
 + 
 +===== Sed Beispiele ===== 
 + 
 +<WRAP center box 100%> 
 +==== Ersetzen von Text in einer Datei ==== 
 + 
 +  * ''Jedes Auftreten von "Werner" wird durch "Urs" ersetzt (aber auch "Wernerius" wird zu "Ursius"). Wird **g (global)** weggelassen, wird nur das erste Auftreten in einer Zeile ersetzt.'' <code># sed s/Werner/Urs/g Textdatei</code> 
 +  * ''Alle Wörter "Werner" werden durch "Urs" ersetzt (nicht "Wernerius"), aber nur in Zeilen, die "Name" enthalten.'' <code># sed /Name/s/\bWerner\b/Urs/g Textdatei</code> 
 +  * ''Ersetzt alle "Werner" durch "Urs" und gibt nur die betroffenen Zeilen aus.'' <code># sed -n s/Werner/Urs/gp Textdatei</code> 
 +</WRAP> 
 + 
 +---- 
 + 
 +<WRAP center box 100%> 
 +==== Entfernen von Zeilen ==== 
 + 
 +''Zeilen die mit # anfangen, werden entfernt.'' <code># sed '/^#/d' Textdatei</code> 
 +</WRAP> 
 + 
 +<WRAP center box 100%> 
 +==== Zeilen einfügen ==== 
 + 
 +  * ''Vor der dritten Zeile wird "Neue Zeile" eingefügt.'' <code># sed '3iNeue Zeile' Textdatei</code> 
 +  * ''Hier wird eine "Neue Zeile" nach der vierten Zeile eingefügt.'' <code># sed '4aNeue Zeile' Textdatei</code> 
 +  * ''Hier wird eine "Neue Zeile" nach der letzten Zeile eingefügt.'' <code># sed '$aNeue Zeile' Textdatei</code> 
 +</WRAP> 
 + 
 +---- 
 + 
 +<WRAP center box 100%> 
 +==== Reguläre Ausdrücke ==== 
 + 
 +''Alle Zeilen, die mit "E-Mail:" anfangen, werden ersetzt.'' <code># sed 's/^E-Mail:.*$/E-Mail-Adresse ist privat/' Textdatei</code> 
 +</WRAP> 
 + 
 +---- 
 + 
 +<WRAP center box 100%> 
 +==== Bearbeiten von Dateinamen ==== 
 + 
 +Normalerweise wird "/" als Trennzeichen verwendet. Es lässt sich aber beliebig austauschen, was beim Bearbeiten von Dateinamen nützlich ist. <code># sed 's!/home/werner/!/home/urs/!' Textdatei</code> 
 +</WRAP> 
 + 
 +----
  
 <WRAP center box 100%> <WRAP center box 100%>
Line 98: Line 176:
 </WRAP> </WRAP>
  
 +===== Weiteres =====
 +
 +  * https://www.linux-community.de/ausgaben/linuxuser/2002/11/sed/
 +  * https://www.computerhope.com/unix/used.htm
 +  * http://kreativgarten.bplaced.net/doku.php?id=sed
  
  
  • linux/sed.1557151458.txt.gz
  • Last modified: 2019/05/06 16:04
  • by michael