lesen Text ein von der Standardeingabe, geben Text aus auf der Standardausgabe – typische Stationen in einer Pipeline: Sequenz aus einfachen Programmbausteinen mit reinem Text als Schnittstelle.
Einfachheit bedeutet die Beschränkung auf eine genau definierte Funktionalität und gute Verständlichkeit der Ein- und Ausgabedaten.
Pipes sind nur sinnvoll für die schrittweise Verarbeitung von Text.
Zeilenweises Sortieren von spaltenweise angeordneten Textdateien.
Optionen | |
n | # in numerischer Reihenfolge |
r | # reverse – fallend sortiert |
k n | # key – Sortierspalte, n ≥ 1 |
f | # fold – Schreibung ignorieren |
Format | |
sort –optionenopt dateiName(n) | |
Beispiele | |
ls -l | sort -r -n -k 5 | # fallend nach Dateigröße |
ifconfig -s | sort -r -n -k 2 | |
Quiz | |
# Verzeichnisinhalt nach Tag sortiert |
Spalten sind per Voreinstellung getrennt durch Leer- oder Tabulatorzeichen (white space).
In Dateien zeilenweise nach Zeichenketten suchen.
Optionen | |
c | # count – nur Anzahl von Zeilen ermitteln |
i | # ignore – Schreibung ignorieren |
n | # numbers – Zeilennummern mit ausgeben |
o | # jeden gefundenen Text auf eigener Zeile ausgeben |
v | # genau die Zeilen ohne den Suchtext ausgeben |
Format | |
fgrep –optionenopt suchText dateiName(n)opt | |
Beispiele | |
fgrep main ersteAufgabe.c zweiteAufgabe.c | |
fgrep -i "Hello World" hallo.c | |
fgrep -v " " RohText.txt | |
fgrep -c bash /etc/passwd | |
fgrep pogo | |
ps -ef | fgrep bash |
Unterschied zu find?
Format | |
sed –optionenopt sedKommando dateiName(n)opt | |
sed Kommando | |
s/text1/text2/sedOptionenopt | # substitute – text1 durch text2 ersetzen |
bereich d | # delete – alle Zeilen im bereich löschen |
sed Kommando Optionen | |
i | # ignore – Schreibung ignorieren (nicht OSX) |
g | # global – alle Treffer ersetzen |
Beispiele | |
sed s/ab/@/ig | |
# 5ababc Abd $Aab ➝ 5@@c @d $A@ | |
sed s/Hello/HELLO/ <in >out | |
# das erste Hello pro Zeile durch HELLO ersetzen | |
sed 's/Hello World/$$/; s/tiger/wolf/g' | |
# warum maskieren? Wirkung? | |
sed "2,131 d" < RohText.txt | |
# 2. bis. 131. Zeile löschen – maskieren? |
sed-Kommandos auf der Kommandozeile passend quotieren. Tutorial
Schreiben Sie folgende Sequenz von Kommandos kürzer (und effizienter):
sort < list > temp1
head -15 < temp1 > temp2
fgrep -i Unix < temp2
rm temp1 temp2
sed "/<script>/,/<\/script>/ d" < web.html
find . -name "*.html" -exec fgrep -H -c div "{}" ";" | sort -t: -n -k2 | tail -1
Format | |
tr -d menge | # löschen |
tr menge1 menge2 | # umkodieren |
Beispiele | |
tr -d "\n" | # alle Zeilentrenner löschen |
tr ab 56 | # a in 5, b in 6 ändern |
tr "\n" " " < Pers.txt | # Effekt? |
tr "\\n" " " < Pers.txt | # Effekt? |
tr a5-7 6C-E | # Effekt? |
Quiz: translaten Sie die Datei /etc/hosts in eine Kopie, in der alles groß geschrieben ist. Details in den man-pages.
Optionen | |
c | # Anzahl der Kopien mit ausgeben |
d | # Nur mehrfache Zeilen ausgeben |
i | # Schreibung ignorieren |
Format | |
uniq –optionsopt dateiopt | |
Beispiele | |
uniq -c hs-keys.txt |
Quiz:
Ermitteln Sie alle html-Dateien unter
~progbau/Publicite/Unix, in denen die
Zeichenkette section genau
zwei Mal vorkommt – unabhängig von der Verteilung über die Zeilen.
Die Optionen -o von fgrep
und -print von
find sind uU. von Nutzen.
Achtung: Nächster Kurs im kommenden Semester!