Zeilenweise?

Noch genauer treffen Sie die einzelnen Zeilen durch Voranstellen der Zeilennummer. Soll nur in der ersten Zeile gesucht und ersetzt werden, stellen Sie eine "1" voran: '1s/huhnix.net/huhnix.org/g' – auch hier ist das g wieder wichtig, falls der String mehr als einmal in der ersten Zeile vorkommt. Sollen gleich mehrere Zeilen ausgewählt werden, z. B. 1 bis 20, heißt der Befehl '1,20s/huhnix.net/huhnix.org/g'. Entsprechend lassen sich Zeilen ausschließen. Der Aufruf '5-15!s/huhnix.net/huhnix.org/g' wird Ersetzungen in der gesamten Datei bis auf die Zeilen 5-15 vornehmen.

Gescriptet

Zusammen mit der Option -f kann in der Eingabezeile auf Befehle verzichtet und stattdessen ein Skript mit sed-Kommandos gestartet werden. In so einer Datei sammeln Sie mehrere Befehle, die dann nacheinander auf die Eingabe angewendet werden. Nehmen wir an, in einem Verzeichnis liegen mehrere MP3s, deren Dateinamen Ihnen nicht gefallen:

huhn@asteroid:~$ ls
01.%20Welcome%20To%20Cabaret.mp3
02.%20Natives.mp3
03.%20Fairytale%20In%20York.mp3
04.%20Delirium%20Tremens.mp3
05.%20Black%20Is%20The.mp3
06.%20Missing%20You.mp3
07.%20Cliffs%20of%20Dooneen.mp3
…

Es sollen nun alle Punkte hinter den Track-Nummern und die "%20"-Einträge durch Unterstriche ersetzt werden. Dieses sind zwei getrennte sed-Aufrufe, die Sie nun hintereinander in eine solche Skript-Datei schreiben:

s/\.%20/_/g
s/%20/_/g

Beachten Sie den Backslash vor dem Punkt: Wie Sie aus dem kurzen Ausflug ins Land der regulären Ausdrücke wissen, steht der Punkt normalerweise für ein beliebiges Zeichen. Ließe man den Backslash weg, würde nun jedes Zeichen vor "%20" angesprochen und ebenfalls entfernt. So wird nun zunächst nach einem "." vor "%20" gesucht und der Gesamtausdruck durch "_" ersetzt – in einem zweiten Durchlauf werden die restlichen "%20" ohne vorangehenden Punkt bearbeitet.

Speichern Sie das Skript unter einem beliebigen Namen, z. B. script. Da sed von der Standardeingabe liest, stellen Sie dem Skript noch ein ls *.mp3 und ein Pipe-Zeichen voran:

huhn@asteroid:~$ ls *.mp3 | sed -f script
01_Welcome_To_The_Cabaret.mp3
02_Natives.mp3
03_Fairytale_In_York.mp3
…

Sind Sie mit den neuen Dateinamen einverstanden und wollen die Dateien entsprechend umbenennen, muss in den Aufruf noch ein weiterer Befehl integriert werden: Das Kommando mv (für englisch "move"). Eine kleine for-Schleife verarbeitet direkt alle Dateien:

huhn@asteroid:~$ for file in *.mp3; do mv -v $file `echo $file | sed -f script`; done
`01.%20Welcome%20To%20The%20Cabaret.mp3' -> `01_Welcome_To_The_Cabaret.mp3'
`02.%20Natives.mp3' -> `02_Natives.mp3'
…

Im Klartext heißt das: Für alle Dateien, die auf "*.mp3" enden, mache Folgendes: Verschiebe diese für den User sichtbar in das Ergebnis der sed-Operation.

Glossar

stdin

Es gibt drei "Standardkanäle" für Ein- und Ausgabe, stdin (Standardeingabe), stdout (Standardausgabe) und stderr (Standardfehlerausgabe). Ein Benutzer hat z. B. die Tastatur als Standardeingabe und den Bildschirm als -ausgabe. Wenn man eine Datei mit zcat ("gzip -d -c") dekomprimiert, dann wird sie, sofern sie nicht umgeleitet wird, auf den Bildschirm ausgegeben. Leitet man diese mit einer Pipe (|) um, dient sie dem lesenden Programm wiederum als Standardeingabe.

stdout

Es gibt drei "Standardkanäle" für Ein- und Ausgabe, stdin (Standardeingabe), stdout (Standardausgabe) und stderr (Standardfehlerausgabe). Ein Benutzer hat z. B. die Tastatur als Standardeingabe und den Bildschirm als -ausgabe. Wenn man eine Datei mit zcat ("gzip -d -c") dekomprimiert, dann wird sie, sofern sie nicht umgeleitet wird, auf den Bildschirm ausgegeben. Leitet man diese mit einer Pipe (|) um, dient sie dem lesenden Programm wiederum als Standardeingabe.

Pager

Ein Programm, das die Bildschirmausgabe eines anderen Programms abfängt und seitenweise anzeigt. Die beiden Pager less und more sollten auf jeder Linux-Distribution installiert sein.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Die Post ist da!
    Der schlanke Konsolen-Mailclient Mailx sieht auf den ersten Blick nicht sehr komfortabel aus, hat aber gerade beim Einsatz in Skripten seine Daseinsberechtigung.
  • Zu Befehl: mv & mmv
    Mit mv ("move") steht Ihnen ein Standardkommando zur Verfügung, das schon seit Ewigkeiten auf Unix-Systemen dabei hilft, Dateien und Verzeichnisse zu verschieben oder umzubenennen. Leider wird es etwas komplizierter, wenn gleich mehrere Dinge in einem Rutsch durch die Gegend geschoben werden sollen. Mit längeren Konstruktionen und for-Schleifen lassen sich diese Aufgaben erledigen, aber warum kompliziert, wenn's auch einfach geht? Das Programm mmv ("multiple move") hilft dabei.
  • Sortiert und zugenäht
    Mit dem Kommando sort sortieren Sie Zeilen in Dateien oder aus der Standardeingabe. Als reines Sortierprogramm konzipiert, arbeitet das Tool oft mit anderen Programmen auf der Kommandozeile zusammen.
  • Zu Befehl: Kanäle, Pipes und Tee
    Mit wenigen Handgriffen leiten Sie auf der Kommandozeile Ein- und Ausgaben von Befehlen um und kombinieren Kommandos. Wir stellen die benötigten Bash-Operatoren vor und zeigen, wie Sie mit dem Programm tee noch einen Zwischenschritt einlegen.
  • Stream-Editor sed
    Für stets wiederkehrende Aufgaben an einer oder mehreren Dateien kann das Arbeiten mit einem reinen Text-Editor schnell mühsam werden. Mit "sed" sparen Sie jede Menge Tipparbeit.
Kommentare

Infos zur Publikation

LU 12/2017: Perfekte Videos

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Broadcom Adapter 802.11n nachinstallieren
Thomas Mengel, 31.10.2017 20:06, 2 Antworten
Hallo, kann man nachträglich auf einer Liveversion, MX Linux auf einem USB-Stick, nachträglich...
RUN fsck Manually / Stromausfall
Arno Krug, 29.10.2017 12:51, 1 Antworten
Hallo, nach Absturz des Rechners aufgrund fehlendem Stroms startet Linux nicht mehr wie gewohn...
source.list öffnet sich nicht
sebastian reimann, 27.10.2017 09:32, 2 Antworten
hallo Zusammen Ich habe das problem Das ich meine source.list nicht öffnen kann weiß vlt jemman...
Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 6 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...