Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
shellscripts:shellscripts [2021/04/08 21:01] – [Leerzeichen entfernen] st | shellscripts:shellscripts [2023/01/17 23:45] (aktuell) – [Links] st | ||
---|---|---|---|
Zeile 16: | Zeile 16: | ||
===== Links ===== | ===== Links ===== | ||
+ | * [[https:// | ||
* [[http:// | * [[http:// | ||
* [[http:// | * [[http:// | ||
Zeile 181: | Zeile 182: | ||
echo "empty parameter!" | echo "empty parameter!" | ||
echo " | echo " | ||
- | fi | ||
- | </ | ||
- | |||
- | ==== Fehler aufgetreten (Exit-Code ungleich 0) ==== | ||
- | |||
- | <code bash> | ||
- | if [ $? -ne 0 ] | ||
- | then | ||
- | echo Fehler aufgetreten | ||
- | exit 1 | ||
- | else | ||
- | Code | ||
fi | fi | ||
</ | </ | ||
Zeile 232: | Zeile 221: | ||
[[https:// | [[https:// | ||
+ | |||
+ | |||
+ | ==== interaktive Shell erkennen ==== | ||
+ | |||
+ | Skripts sollten bei Aufruf über cron nicht unnötig Statusmeldungen erzeugen: | ||
+ | <code bash> | ||
+ | if [ -z " | ||
+ | echo This shell is not interactive. | ||
+ | else | ||
+ | echo This shell is interactive. | ||
+ | fi | ||
+ | </ | ||
+ | |||
==== Datei erzeugen ==== | ==== Datei erzeugen ==== | ||
Zeile 248: | Zeile 250: | ||
==== Zählschleife (kopfgesteuert) ==== | ==== Zählschleife (kopfgesteuert) ==== | ||
+ | |||
+ | kopfgesteuert: | ||
von 1.. bis 10 zählen: | von 1.. bis 10 zählen: | ||
Zeile 254: | Zeile 258: | ||
i=1 | i=1 | ||
while [ $i -le 10 ] | while [ $i -le 10 ] | ||
+ | do | ||
+ | echo $i | ||
+ | let i=$i+1 #nur bash | ||
+ | # i=`expr $i + 1` # universal | ||
+ | done | ||
+ | </ | ||
+ | oder als for-Schleife: | ||
+ | <code bash> | ||
+ | for i in {0..10}; do echo $i; done | ||
+ | </ | ||
+ | ==== Zählschleife (Fussgesteuert) ==== | ||
+ | |||
+ | Fußgesteuert: | ||
+ | |||
+ | von 1.. bis 10 zählen: | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | i=1 | ||
+ | until [ $i -gt 10 ] | ||
do | do | ||
echo $i | echo $i | ||
Zeile 309: | Zeile 332: | ||
</ | </ | ||
- | [[https:// | + | [[https:// |
+ | |||
+ | === Fehler aufgetreten (Exit-Code ungleich 0) === | ||
+ | |||
+ | <code bash> | ||
+ | if [ $? -ne 0 ] | ||
+ | then | ||
+ | echo Fehler aufgetreten | ||
+ | exit 1 | ||
+ | else | ||
+ | Code | ||
+ | fi | ||
+ | </ | ||
==== Dateinamen beschneiden ==== | ==== Dateinamen beschneiden ==== | ||
- | Aus einem Pfad bekommt man mit '' | + | Aus einem Pfad bekommt man mit |
+ | * '' | ||
+ | * '' | ||
- | | + | Andere Möglichkeiten |
+ | | ||
* nur die **Erweiterung**: | * nur die **Erweiterung**: | ||
* pro Aufruf **eine Ebene wegnehmen** (bei mehreren Punkten im Dateinamen): | * pro Aufruf **eine Ebene wegnehmen** (bei mehreren Punkten im Dateinamen): | ||
Zeile 331: | Zeile 369: | ||
</ | </ | ||
+ | ==== sed-Befehle ==== | ||
+ | |||
+ | # Kommentarzeilen entfernen:'' | ||
+ | |||
+ | Leerzeilen: '' | ||
+ | |||
+ | < | ||
+ | # Doppelter Zeilenvorschub | ||
+ | sed G | ||
+ | |||
+ | # Doppelter Zeilenabstand für Dateien, die Leerzeilen enthalten. | ||
+ | # Die Ausgabe sollte keine zwei aufeinander folgenden Leerzeilen enthalten. | ||
+ | sed '/ | ||
+ | |||
+ | # Dreifacher Zeilenvorschub | ||
+ | sed ' | ||
+ | |||
+ | # Doppelter Zeilenvorschub rückgängig machen | ||
+ | # (Annahme: jede zweite Zeile ist leer) | ||
+ | sed ' | ||
+ | |||
+ | # Füge eine Leerzeile über jeder Zeile ein, die " | ||
+ | sed '/ | ||
+ | |||
+ | # Füge eine Leerzeile unter jeder Zeile ein, die " | ||
+ | sed '/ | ||
+ | |||
+ | # Füge eine Leerzeile über und unter jeder Zeile ein, die " | ||
+ | sed '/ | ||
+ | |||
+ | Nummerierung | ||
+ | |||
+ | # Nummeriere alle Zeilen (linksbündig). Der Tabulator anstelle von Leerzeichen | ||
+ | # erhält den Rand. (siehe auch die Bemerkung zu ' | ||
+ | sed = filename | sed ' | ||
+ | |||
+ | # Nummeriere alle Zeilen (Zahl rechtsbündig in linker Spalte) | ||
+ | sed = filename | sed 'N; s/^/ /; s/ *\(.\{6, | ||
+ | |||
+ | # Nummeriere alle Zeilen, aber die Nummern von Leerzeilen werden nicht ausgegeben. | ||
+ | sed '/ | ||
+ | |||
+ | # Zeilen zählen (Nachahmung von "wc -l") | ||
+ | sed -n ' | ||
+ | |||
+ | TEXT UMWANDLUNG UND ERSETZUNG: | ||
+ | |||
+ | # IN EINER UNIX UMGEBUNG: Wandle DOS Zeilenvorschübe (CR/LF) in das Unix-Format. | ||
+ | sed ' | ||
+ | sed ' | ||
+ | sed ' | ||
+ | |||
+ | # IN EINER UNIX UMGEBUNG: Wandle Unix Zeilenvorschübe (LF) in das DOS-Format. | ||
+ | sed " | ||
+ | sed ' | ||
+ | sed " | ||
+ | sed ' | ||
+ | |||
+ | # IN EINER DOS UMGEBUNG: Wandle Unix Zeilenvorschübe (LF) in das DOS-Format. | ||
+ | sed " | ||
+ | sed -n p # Möglichkeit 2 | ||
+ | |||
+ | # IN EINER DOS UMGEBUNG: Wandle DOS Zeilenvorschübe (CR/LF) in das Unix-Format. | ||
+ | # Die kann mit mit der UnxUtils Version von sed, Version 4.0.7 oder neuer | ||
+ | # gemacht werden. Die UnxUtils Version von sed kann durch die zusätzliche | ||
+ | # " | ||
+ | # Ansonsten kann die Umwandlung von DOS-Zeilenvorschüben in UNIX-Zeilenvorschübe | ||
+ | # nicht mit sed unter DOS vorgenommen werden. Benutzen Sie stattdessen " | ||
+ | sed " | ||
+ | tr -d \r <infile > | ||
+ | |||
+ | # Lösche alle Einrückungen (Leerzeichen, | ||
+ | # Richtet alle Zeilen linksbündig aus. | ||
+ | sed 's/^[ \t]*//' | ||
+ | |||
+ | # Lösche unsichtbare Zeichen (Leerzeichen, | ||
+ | sed 's/[ \t]*$//' | ||
+ | |||
+ | # Lösche unsichtbare Zeichen sowohl am Anfang als auch am Ende jeder Zeile | ||
+ | sed 's/^[ \t]*//;s/[ \t]*$//' | ||
+ | |||
+ | # Füge 5 Leerzeichen am Anfang jeder Zeile ein. (Einrückung) | ||
+ | sed ' | ||
+ | |||
+ | # Alle Zeilen rechtsbündig ausrichten (Spaltenbreite: | ||
+ | sed -e :a -e ' | ||
+ | |||
+ | # Zentriere alle Zeilen in einer 79-Zeichen breiten Spalte. | ||
+ | # Bei Methode 1 bleiben Leerzeichen am Zeilenanfang und -ende erhalten. | ||
+ | # Bei Methode 2 werden Leerzeichen am Zeilenanfang gelöscht und es | ||
+ | # folgen keine Leerzeichen am Zeilenende. | ||
+ | | ||
+ | | ||
+ | |||
+ | # Ersetze (Suchen und Ersetzen) " | ||
+ | sed ' | ||
+ | sed ' | ||
+ | sed ' | ||
+ | sed ' | ||
+ | sed ' | ||
+ | |||
+ | |||
+ | # Ersetze " | ||
+ | sed '/ | ||
+ | |||
+ | # Ersetze " | ||
+ | sed '/ | ||
+ | |||
+ | # Ersetze " | ||
+ | sed ' | ||
+ | gsed ' | ||
+ | |||
+ | # Kehre die Reihenfolge der Zeilen um (entspricht " | ||
+ | # Bug/Feature in HHsed v1.5 löscht hierbei Leerzeilen | ||
+ | sed ' | ||
+ | sed -n ' | ||
+ | |||
+ | # Kehre die Reihenfolge der Buchstaben innerhalb jeder Zeile um (entspricht " | ||
+ | sed '/ | ||
+ | |||
+ | # Füge Zeilenpaare nebeneinander zusammen (entspricht " | ||
+ | sed ' | ||
+ | |||
+ | # Falls eine Zeile mit einem Rückwärtsstrich " | ||
+ | sed -e :a -e '/ | ||
+ | |||
+ | # Falls eine Zeile mit einem Gleichheitszeichen " | ||
+ | # füge die vorhergehende hinzu und ersetzt das " | ||
+ | sed -e :a -e ' | ||
+ | |||
+ | # Füge Kommas in Zahlenfolgen ein. Aus " | ||
+ | gsed ': | ||
+ | sed -e :a -e ' | ||
+ | |||
+ | # Füge Kommas in Zahlenfolgen mit Dezimalpunkt und Vorzeichen ein. (GNU sed) | ||
+ | gsed -r ': | ||
+ | |||
+ | # Füge alle 5 Zeilen eine Leerzeile ein. (Nach 5, 10, 15, 20,... Zeilen) | ||
+ | gsed ' | ||
+ | sed ' | ||
+ | |||
+ | DRUCKEN AUSGEWÄHLTER ZEILEN: | ||
+ | |||
+ | # Ausgabe der ersten 10 Zeilen einer Datei (wie " | ||
+ | sed 10q | ||
+ | |||
+ | # Ausgabe der ersten Zeilen einer Datei (wie "head -1") | ||
+ | sed q | ||
+ | |||
+ | # Ausgabe der letzten 10 Zeilen einer Datei (wie " | ||
+ | sed -e :a -e ' | ||
+ | |||
+ | # Ausgabe der letzten beiden Zeilen einer Datei (wie "tail -2") | ||
+ | sed ' | ||
+ | |||
+ | # Ausgabe der letzten Zeilen einer Datei (wie "tail -1") | ||
+ | sed ' | ||
+ | sed -n ' | ||
+ | |||
+ | # Ausgabe der vorletzten Zeile einer Datei | ||
+ | sed -e ' | ||
+ | sed -e ' | ||
+ | sed -e ' | ||
+ | |||
+ | # Ausgabe der Zeilen, die durch den Regulären Ausdruck (Regex) definiert sind (wie " | ||
+ | sed -n '/ | ||
+ | sed '/ | ||
+ | |||
+ | # Ausgabe der Zeilen, die den Reguläre Ausdruck NICHT erfüllen (wie "grep -v") | ||
+ | sed -n '/ | ||
+ | sed '/ | ||
+ | |||
+ | # Ausgabe der Zeile direkt oberhalb des Regex, jedoch nicht die Zeile | ||
+ | # die den Regex erfüllt. | ||
+ | sed -n '/ | ||
+ | |||
+ | # Ausgabe der Zeile direkt unterhalb des Regex, jedoch nicht die Zeile | ||
+ | # die den Regex erfüllt. | ||
+ | sed -n '/ | ||
+ | |||
+ | # Ausgabe eine umgebende Zeile vor und nach der Regex, mit Angabe | ||
+ | # der Zeilennummer der Zeile, die den Regex erfüllt. (ähnlich "grep -A1 -B1") | ||
+ | sed -n -e '/ | ||
+ | |||
+ | # Suche nach AAA und BBB und CCC (in beliebiger Reihenfolge) | ||
+ | sed '/ | ||
+ | |||
+ | # Suche nach AAA und BBB und CCC (in vorgegebener Reihenfolge) | ||
+ | sed '/ | ||
+ | |||
+ | # Suche nach AAA oder BBB oder CCC (wie " | ||
+ | sed -e '/ | ||
+ | gsed '/ | ||
+ | |||
+ | # Ausgabe des Absatzes falls dieser AAA enthält (Leerzeilen trennen Absätze) | ||
+ | # Für HHsed v1.5 muss ' | ||
+ | sed -e '/ | ||
+ | |||
+ | # Ausgabe des Absatzes falls dieser AAA, BBB und CCC enthält. (Reihenfolge egal) | ||
+ | # Für HHsed v1.5 muss ' | ||
+ | sed -e '/ | ||
+ | |||
+ | # Ausgabe des Absatzes falls dieser AAA, BBB oder CCC enthält. | ||
+ | # Für HHsed v1.5 muss ' | ||
+ | sed -e '/ | ||
+ | gsed '/ | ||
+ | |||
+ | # Ausgabe der Zeilen die 65 Zeichen lang oder länger sind | ||
+ | sed -n '/ | ||
+ | |||
+ | # Ausgabe der Zeilen die kürzer als 65 Zeichen sind | ||
+ | sed -n '/ | ||
+ | sed '/ | ||
+ | |||
+ | # Ausgabe der Datei ab dem regulären Ausdruck bis zum Ende | ||
+ | sed -n '/ | ||
+ | |||
+ | # Ausgabe eines Abschnittes der Datei, der durch Zeilennummern definiert ist | ||
+ | # (hier: 8-12, inklusive) | ||
+ | sed -n ' | ||
+ | sed ' | ||
+ | |||
+ | # Ausgabe von Zeile 52 | ||
+ | sed -n ' | ||
+ | sed ' | ||
+ | sed ' | ||
+ | |||
+ | # Ausgabe jeder 7. Zeile - beginnend bei Zeile 3 | ||
+ | gsed -n ' | ||
+ | sed -n ' | ||
+ | |||
+ | # Ausgabe des Teils der Datei, der zwischen den regulären Ausdrücken ist (inklusive der Regexs) | ||
+ | sed -n '/ | ||
+ | |||
+ | LÖSCHUNG BESTIMMTER ZEILEN: | ||
+ | |||
+ | # Ausgabe der Datei, AUSSER dem Teil, der zwischen den regulären Ausdrücken ist | ||
+ | sed '/ | ||
+ | |||
+ | # Löschung von aufeinander folgenden, identischen Zeilen (wie " | ||
+ | # Die erste Zeile in einer Folge von Duplikaten wird ausgegeben, der Rest gelöscht. | ||
+ | sed '$!N; / | ||
+ | |||
+ | # Lösche identische, nicht aufeinander folgende Zeilen einer Datei. | ||
+ | # Achten Sie darauf nicht die Buffer-größe des " | ||
+ | sed -n 'G; s/ | ||
+ | |||
+ | # Löscht alle Zeilen außer Duplikate (wie "uniq -d"). | ||
+ | sed '$!N; s/ | ||
+ | |||
+ | # Löscht die ersten 10 Zeilen einer Datei | ||
+ | sed ' | ||
+ | |||
+ | # Löscht die letzte Zeile einer Datei | ||
+ | sed ' | ||
+ | |||
+ | # Löscht die zwei letzten Zeilen einer Datei | ||
+ | sed ' | ||
+ | |||
+ | # Löscht die 10 letzten Zeilen einer Datei | ||
+ | sed -e :a -e ' | ||
+ | sed -n -e :a -e ' | ||
+ | |||
+ | # Lösche jede 8. Zeile | ||
+ | gsed ' | ||
+ | sed ' | ||
+ | |||
+ | # Lösche Zeilen die die Regex erfüllen | ||
+ | sed '/ | ||
+ | |||
+ | # Lösche ALLE Leerzeilen aus einer Datei (wie "grep ' | ||
+ | sed '/ | ||
+ | sed '/ | ||
+ | |||
+ | # Lösche alle AUFEINANDER FOLGENDEN Leerzeilen außer der ersten; | ||
+ | # außerdem, lösche alle Leerzeilen am Anfang und am Ende der Datei | ||
+ | # (Wie "cat -s") | ||
+ | sed '/ | ||
+ | sed '/ | ||
+ | |||
+ | # Lösche alle AUFEINANDER FOLGENDEN Leerzeilen, außer die ersten 2: | ||
+ | sed '/ | ||
+ | |||
+ | # Lösche alle Leerzeilen am Anfang einer Datei | ||
+ | sed '/ | ||
+ | |||
+ | # Lösche alle Leerzeilen am Ende einer Datei | ||
+ | sed -e :a -e '/ | ||
+ | sed -e :a -e '/ | ||
+ | |||
+ | # Lösche die letzte Zeile jedes Absatzes | ||
+ | sed -n '/ | ||
+ | |||
+ | SPEZIELLE EINSATZGEBIETE: | ||
+ | |||
+ | # Entferne nroff " | ||
+ | # Die ' | ||
+ | sed " | ||
+ | sed ' | ||
+ | sed ' | ||
+ | |||
+ | # nur die Usenet/ | ||
+ | sed '/ | ||
+ | |||
+ | # nur die Usenet/ | ||
+ | sed ' | ||
+ | |||
+ | # Die Betreffzeile einer E-Mail, aber ohne das " | ||
+ | sed '/ | ||
+ | |||
+ | # Die Antwortadresse einer E-Mail | ||
+ | sed '/ | ||
+ | |||
+ | # Extrahiert die E-Mail-Adresse aus der Antwortadresse des vorherigen Scripts | ||
+ | sed 's/ *(.*)//; s/>.*//; s/.*[:<] *//' | ||
+ | |||
+ | # Ein Größer-Zeichen an jedem Zeilenanfang einfügen (Nachricht zitieren) | ||
+ | sed ' | ||
+ | |||
+ | # Größerzeichen am Zeilananfang löschen (Macht vorheriges script rückgängig) | ||
+ | sed ' | ||
+ | |||
+ | # Entferne die meisten HTML-Auszeichnungen (inklusive die über mehrere Zeilen) | ||
+ | sed -e :a -e ' | ||
+ | |||
+ | # Multi-part uuencodierte Binärdateien auspacken | ||
+ | # und fehlerhafte Kopfzeilen entfernen, so dass nur die uuencodierten Daten | ||
+ | # übrig bleiben. | ||
+ | # Die übergebenen Dateien müssen in der richtigen Reihenfolge sein. | ||
+ | # Möglichkeit 1 kann auf der Kommandozeile ausgeführt werden, | ||
+ | # Möglichkeit 2 kann als Unix-Shell-Script ausgeführt werden. (Basierend auf einem Script von Rahul Dhesi) | ||
+ | sed '/ | ||
+ | sed '/ | ||
+ | |||
+ | # Sortiere die Absätze der Datei alphabetisch. Absätze werden durch Leerzeilen getrennt. | ||
+ | # GNU sed benutzt \v als vertikale Tabulatoren (Alternativ kann auch jedes andere, | ||
+ | # eindeutige Zeichen verwendet werden) | ||
+ | sed '/ | ||
+ | gsed '/ | ||
+ | |||
+ | # Komprimiere jede .TXT-Datei einzeln mit zip, lösche die Quelldatei | ||
+ | # und benenne jede ZIP-Datei mit dem Namen der TXT-Datei ohne .TXT | ||
+ | # (unter DOS: Der Befehl "dir /b" gibt die reinen Dateinamen in Großbuchstaben zurück) | ||
+ | echo @echo off > | ||
+ | dir /b *.txt | sed " | ||
+ | |||
+ | TYPISCHE BEFEHLSZEILEN: | ||
+ | entgegen und wendet diese, in der entsprechenden Reihenfolge auf jede | ||
+ | Zeile der Eingahe an. Nachdem alle Befehle auf die erste Zeile angewendet | ||
+ | wurden, wird diese ausgegeben, und die zweite Zeile wird zur Bearbeitung | ||
+ | entgegengenommen. Der Kreislauf wiederholt sich. Die vorhergehenden Beispiele | ||
+ | gehen davon aus, dass die Eingaben von der Standarteingabe (STDIN) kommen (d.h. z.B. | ||
+ | die Tastatur, bzw. i.d.R. wird die Eingabe von einer Pipe kommen). | ||
+ | Ein oderer mehrere Dateinamen können an die Befehlszeile angehängt werden, | ||
+ | fallt die Eingabe nicht von STDIN kommt. Die Ausgaben werden an die | ||
+ | Standarteingabe geschickt, d.h. i.d.R. auf dem Bildschirm ausgegeben. | ||
+ | Daher gilt: | ||
+ | |||
+ | cat filename | sed ' | ||
+ | sed ' | ||
+ | sed ' | ||
+ | |||
+ | Weitere Erklärungen des Sysntax, inklusive der Möglichkeit Befehle | ||
+ | von einer Datei statt von der Befehlszeile zu benutzen sind in "sed & | ||
+ | awk, 2nd Edition," | ||
+ | 1997; http:// | ||
+ | und Tim O' | ||
+ | die als U-SEDIT2.ZIP au vielen Seiten zum Download bereit stehen zu finden. | ||
+ | |||
+ | Um alle Möglichkeiten von sed zu nutzen, muss man Reguläre Ausdrücke | ||
+ | verstehen. Hierfür können folgende Bücher herangezogen werden: | ||
+ | " | ||
+ | Die Manual-Seiten (" | ||
+ | ("man sed", "man regexp", | ||
+ | "man ed"), aber einige dieser Seiten sind für ihren Schwierigkeitsgrad | ||
+ | bekannt. Sie sind nicht als Einführung für neue Sed- oder Regex-Benutzer | ||
+ | geschrieben, | ||
+ | bereits beherrschen. | ||
+ | |||
+ | BENUTZUNG VON HOCHKOMMAS: | ||
+ | Die angeführten Beispiele schließen die Anweisungen in einfache | ||
+ | Anführungszeichen (' | ||
+ | sed typischerweise in einer Unix-Umgebung zur Anwendung kommt. | ||
+ | Einfache Anführungszeichen hindern die Unix-Shell (Kommandozeile) | ||
+ | daran, das Dollarzeichen ($) und die umgekehrten Hochkommas (`...`) | ||
+ | auszuwerten, | ||
+ | (" | ||
+ | Benutzer der " | ||
+ | trotz verwendung von einfachen Anführungszeichen alle Ausrufezeichen (!) | ||
+ | mit einem Rückwärtsstrich schützen (z.B. " | ||
+ | ausführen zu können. | ||
+ | DOS-Versionen von sed benötigen allesamt doppelte Anführungszeichen (" | ||
+ | um die Befehle herum. | ||
+ | |||
+ | DIE BENUTZUNG VON ' | ||
+ | Der Deutlichkeit halber haben wir in diesem Dokument die Zeichenfolge ' | ||
+ | benutzt, um das Tabulatorzeichen (0x09) darzustellen. Die meisen Versionen | ||
+ | von sed kennen jedoch diese Darstellung nicht. | ||
+ | Bei der Eingabe der Befehle muss ' | ||
+ | eingegeben werden. ' | ||
+ | v3.02.80 in regulären Ausdrücken als Tabulator anerkannt. | ||
+ | |||
+ | VERSIONEN VON SED: | ||
+ | Die unterschiedlichen sed-versionen haben unterschied und man muss auch | ||
+ | mit leichten Unterschieden im Syntax rechnen. Besonders die Benutzung von | ||
+ | Marken (:name) oder Verzweigungen (b,t) innerhalb von Kommandos (nicht an | ||
+ | deren Ende) werden von vielen Versionen nicht unterstützt. | ||
+ | Wir haben eine Schreibweise gewählt, die sich mit den meisten Versionen | ||
+ | von sed benutzen lässt, auch wenn die beliebten GNU-Versionen von sed eine | ||
+ | elegantere Schreibweise erlauben würden. | ||
+ | Wem man einen ziemlich langen Befehl wie den folgenden sieht: | ||
+ | |||
+ | sed -e '/ | ||
+ | |||
+ | ist es gut zu wissen, dass man diesen mit GNU-sed zu folgendem kürzen kann: | ||
+ | |||
+ | sed '/ | ||
+ | sed '/ | ||
+ | |||
+ | Ausserdem ist zu beachten, dass obwohl viele Versionen von sed einen Befehl | ||
+ | wie "/one/ s/ | ||
+ | was ein Leerzeichen vor dem ' | ||
+ | das Leerzeichen weggelassen werden. | ||
+ | |||
+ | GESCHWINDIGKEITSOPTIMIERUNG: | ||
+ | Falls die ausfürungsgeschwindigkeit wegen großen Dateien oder langsamen CPUs | ||
+ | bzw. Festplatten erhöht werden muss, können Ersetzungen beschleunigt werden, | ||
+ | indem der gesuchte Ausdruck vor dem " | ||
+ | |||
+ | sed ' | ||
+ | sed '/foo/ s/ | ||
+ | sed '/foo/ s// | ||
+ | |||
+ | Wenn bei der Auswahl oder Löschung von Zeilen nur Zeilen aus dem Dateianfang | ||
+ | ausgegeben werden sollen, verkürzt bei großen Dateien ein " | ||
+ | die Bearbeitungszeit erheblich. Daher: | ||
+ | |||
+ | sed -n ' | ||
+ | sed -n ' | ||
+ | </ | ||
+ | **[[http:// | ||
==== Dialog-boxen ==== | ==== Dialog-boxen ==== |