24.02.2013 Aufrufe

Einf ¨uhrung in UNIX - CIS

Einf ¨uhrung in UNIX - CIS

Einf ¨uhrung in UNIX - CIS

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

136 2 <strong>UNIX</strong><br />

aus Gewohnheit. Jokerzeichen <strong>in</strong> filename dagegen werden von der Shell<br />

zu Recht <strong>in</strong>terpretiert, so daß der sed(1) von der Shell e<strong>in</strong>e Liste gültiger<br />

Namen erhält.<br />

Folgender Aufruf ersetzt alle Großbuchstaben durch die entsprechenden<br />

Kle<strong>in</strong>buchstaben (e<strong>in</strong>zeilig):<br />

sed ’y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/<br />

abcdefghijklmnopqrstuvwxyz/’ filename<br />

Das y-Kommando kennt ke<strong>in</strong>e Zeichenbereiche, wie sie bei regulären Ausdrücken<br />

oder beim Kommando tr(1) erlaubt s<strong>in</strong>d, man muß die beiden<br />

notwendigerweise gleichlangen Zeichenmengen auflisten. Übrigens ist obiges<br />

Kommando e<strong>in</strong> Weg zur ROT13-Verschlüsselung, <strong>in</strong>dem man die zweite Zeichenmenge<br />

mit n beg<strong>in</strong>nen läßt. Geht es um den Ersatz e<strong>in</strong>es festen Zeichenmusters<br />

oder e<strong>in</strong>es regulären Ausdrucks durch e<strong>in</strong>en festen Str<strong>in</strong>g, so nimmt<br />

man:<br />

sed ’s/\\[a-z][a-z]*{..*}/LaTeX-K/g’ filename<br />

Im Kommando steht s für substitute. Dann folgt e<strong>in</strong> regulärer Ausdruck<br />

zur Kennzeichnung dessen, was ersetzt werden soll, hier das bereits erwähnte<br />

Muster e<strong>in</strong>es LaTeX-Kommandos. An dritter Stelle ist der Ersatz (replacement)<br />

aufgeführt, hier die feste Zeichenfolge LaTeX-K, und schließlich e<strong>in</strong><br />

Flag, das besagt, den Ersatz global (überall, nicht nur beim ersten Auftreten<br />

des regulären Ausdrucks <strong>in</strong> der Zeile) auszuführen. Das Trennzeichen zwischen<br />

den vier Teilen kann jedes beliebige Zeichen se<strong>in</strong>, es darf nur nicht <strong>in</strong><br />

den Teilen selbst vorkommen.<br />

Merke: Der vi(1) ist e<strong>in</strong> <strong>in</strong>teraktiver Editor, der Tastature<strong>in</strong>gaben erfordert<br />

und nicht Bestandteil e<strong>in</strong>er Pipe se<strong>in</strong> oder im H<strong>in</strong>tergrund laufen kann.<br />

Der sed(1) ist e<strong>in</strong> Filter, das ke<strong>in</strong>e Tastature<strong>in</strong>gaben verlangt, Glied e<strong>in</strong>er<br />

Pipe oder e<strong>in</strong>es Shellscripts se<strong>in</strong> und unbeaufsichtigt laufen kann.<br />

2.7.9 Listenbearbeitung (awk)<br />

Das Werkzeug awk(1) ist nach se<strong>in</strong>en Urhebern ALFRED V. AHO, PETER<br />

J. WEINBERGER und BRIAN W. KERNIGHAN benannt und firmiert als programmierbares<br />

Filter oder Listengenerator. Es läßt sich auch als e<strong>in</strong>e Programmiersprache<br />

für e<strong>in</strong>en bestimmten, engen Zweck auffassen. Der awk(1)<br />

bearbeitet e<strong>in</strong> Textfile zeilenweise, wobei er jede Zeile – auch Satz genannt –<br />

<strong>in</strong> Felder zerlegt. E<strong>in</strong>e typische Aufgabe ist die Bearbeitung von Listen. Hier<br />

ist er angenehmer als der sed(1), allerd<strong>in</strong>gs auch langsamer. Für die Verwaltung<br />

e<strong>in</strong>es kle<strong>in</strong>en Vere<strong>in</strong>s ist er recht, für das Telefonbuch von Berl<strong>in</strong><br />

nicht.<br />

In e<strong>in</strong>fachen Fällen werden dem awk(1) beim Aufruf die Befehle zusammen<br />

mit den Namen der zu bearbeitenden Files mitgegeben, die Befehle <strong>in</strong><br />

Hochkommas, um sie vor der Shell zu schützen:<br />

awk ’befehle’ files

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!