Reguläre Ausdrücke

Die Recutils unterstützen in Abfragen als Argumente von -e Muster aus regulären Ausdrücken, analog zu denen, die Egrep oder grep -e zulassen. Eine Besonderheit der Recfiles stellen die Statements mit einem vorangestellten Prozentzeichen (Tabelle "Spezielle Datensätze") dar: Mit ihnen organisieren Sie die Datenbank.

Spezielle Datensätze

Statement Wirkung
%rec definiert den Typ eines Datensatzes und kennzeichnet Datensatzbeschreibungen (Record Descriptors)
%mandatory, %prohibit legt fest, welche Felder in Datensätzen auftreten dürfen und welche nicht
%unique, %key definiert eindeutige (Primär-)Schlüssel
%auto bewirkt das automatische Erzeugen von Felder
%doc erlaubt, zusätzliche Informationen zu Datensätzen aufzunehmen
%typedef, %type erzeugt Typnamen und ordnet Typen und Felder zu
%sort sortiert Datensätze nach vorgegebenen Feldern
%size ermöglicht, die Größe von Datensätzen einzustellen
%confidential verschlüsselt Informationen

In Emacs

Im Prinzip eignet sich jeder Editor zum Bearbeiten von Recfiles, doch außer Emacs bietet keiner spezielle Funktionen, die Ihnen die Arbeit erleichtern. Die Recutils bringen einen speziellen (Major-)Modus für Emacs mit, der sich in der Datei rec-mode.el verbirgt. Dieser entstand speziell zum Bearbeiten von Recfiles. Steht in der ersten Zeile einer geladenen Datei die Zeichenkette # -*- mode: rec -*-, interpretiert Emacs diese als Recfile und aktiviert automatisch den passenden Modus.

Datensätze erscheinen nun eingefärbt: Schlüsselwörter sind blau, Werte schwarz und Kommentare grün. Weiterhin gibt es nun eine Reihe spezieller Tastenbindungen, mit denen Sie Funktionen zum Bearbeiten direkt aufrufen. Die Tabelle "Tastenbindungen im Emacs" fasst die wichtigsten davon zusammen.

Tastenbindungen im Emacs

Taste Funktion
[Tab] zum nächsten Feld wechseln
[Eingabe] weiter springen
[Leertaste] Sichtbarkeit umschalten
[#] Datensätze zählen
[Umschalt]+[A] Daten an aktuelles Feld anhängen
[Umschalt]+[B] Editiermodus umschalten
[Umschalt]+[I] Informationen zur Datenbank zeigen
[Umschalt]+[R] aktuellen Datensatz bearbeiten
[Umschalt]+[T] Feldtyp bearbeiten
[B] zurück springen
[E] Datensatz bearbeiten
[L] Datensätze suchen
[M] Feld trimmen
[N] zum nächsten Datensatz wechseln
[P] zum vorigen Datensatz wechseln
[S] Suchfunktion
[T] Datensatzbeschreibung zeigen
[Strg]+[C],[T] Datensatztypen suchen

Im Rec-Modus beschränkt Emacs die Darstellung der Datensätze durch sogenanntes "Narrowing" auf die momentan relevanten Teile, beispielsweise den aktuellen Datensatz. Das erhöht die Übersicht, wenn Sie genau wissen, was Sie gerade bearbeiten. Falls dieses Verhalten Sie irritiert, heben Sie es durch [Strg]+[X],[N],[W] auf. Über [Strg]+[X],[N],[N] aktivieren Sie es erneut.

In der Emacs-typischen Schreibweise finden Sie diese Tastenkombination auch als C-x x n und C-x n n beschrieben. Das funktioniert auch über [Umschalt]+[B] und schaltet dabei den Buffer mit der Datenbank in den Editiermodus; voreingestellt öffnet der Emacs Recfiles schreibgeschützt.

Ein Teil der Emacs-Funktionen entspricht jenen, welche die Befehle der Recutils bereitstellen: So wirkt [Umschalt]+[I] wie recinf, [L] stellt eine interaktive Variante von recsel bereit. Gerade diese Funktion hilft, die Arbeitsweise der Recutils zu verstehen. Ein Beispiel verdeutlicht den Einsatz des Modus, der voreingestellten Tastenbindungen und der Befehle.

Nach dem Laden der Beispieldatenbank movies.rec zeigt der Emacs nur eine Zeile, sofern der Rec-Modus aktiv ist:

%rec: movies

Das Schlüsselwort %rec legt den Typ aller folgenden Datensätze fest, bis das Dateiende erreicht ist oder ein neues Statement dieser Art auftritt. Im obigen Beispiel haben die Datensätze also zunächst alle den Typ movies. Falls es weitere Typen im Recfile gibt, zeigt [Umschalt]+[I] sie in der Statuszeile an. Da hier nur 898 movies erscheint, kennen Sie den Umfang der Datenbank und den Typ der Einträge.

Um die Datenbank selbst im Detail zu sehen und zu editieren, wechseln Sie [Umschalt]+[B] in den Editiermodus (Edit buffer zeigt dies an). Alle üblichen Editierbefehle stehen nun bereit. Insbesondere aktiviert [Strg]+[S] die inkrementelle (Volltext-)Suche über alle Felder, mit der Sie in allen Datensätzen suchen. Auch Suchen und Ersetzen steht hier zur Verfügung, ebenso wie das Einfügen oder Löschen von Zeilen (sprich: Feldern) in den Datensätzen. Es lohnt sich aber, dafür die speziellen Befehle des Rec-Modus zu nutzen.

Mit [Strg]+[C],[Strg]+[C] beenden Sie diesen Modus und sehen dann den Datensatz an, in dem sich der Cursor gerade befand. Über [Umschalt]+[A] haben Sie nun die Möglichkeit, ein neues Feld anzulegen, beispielsweise ein Genre, oder etwas zu ergänzen. Auch lassen sich die angezeigten Felder und ihre Werte nun für diesen ausgewählten Datensatz verändern, bis [Strg]+[C],[Strg]+[C] wieder den Modus beendet.

Über [Tab] wechseln Sie zum nächsten Feld. [Umschalt]+[T] erlaubt es, neue Datensatztypen in Recfiles anzulegen. Diese Datensatztypen strukturieren Recfiles auf einer Ebene über den Datensätzen und erlauben es, unterschiedliche Datensatztypen in einem Recfile aufzunehmen.

Beim Betätigen der Taste springt der Cursor zur aktuellen Definition, die mittels %rec: erfolgt. Bei movies.rec definiert in der ersten Zeile %rec: movies den Typ. Bei Bedarf kopieren Sie einfach die Zeile und fügen sie an anderer Stelle im Recfile – etwa vor dem gewünschten Datensatz oder am Ende der Datei – erneut ein, wobei Sie den Typ anpassen.

Es gibt in der Beispieldatenbank drei Einträge zum Film mit dem Titel "Mr. Nice Guy". Wenn Sie nun zwischen dem zweiten und dritten Eintrag den Typ wechseln, haben Sie die Möglichkeit, die drei Datensätze trotz gleicher Titel unterschiedlichen Typen zuzuordnen und entsprechend zu verwalten (Listing 4). Sichern Sie diese veränderte Datenbank unter einem neuen Namen, etwa als movies1.rec.

Listing 4

Id: 539
Title: Mr. Nice Guy
Alternative_titles: Yatgo ho yan
Add_date: 16.07.2002
Audio: German
Identifier: 883
Location: Box 1
Media: (DivX)
Amount_of_Media: 1
Video_format: (DivX);-) V3.11 LOW MOTION
Viewed: 0
%rec: movies1
Id: 540
Title: Mr. Nice Guy - Uncut
Alternative_titles: Yatgo ho yan
Add_date: 16.07.2002
Audio: English
Identifier: 147
Location: Box 2
Media: (DivX)
Amount_of_Media: 1
Subtitles: English [SubRip]
Video_format: (DivX);-) MPEG4 v3
Viewed: 0

Die Auswirkungen dieser Modifikation zeigen sich bei Abfragen an die Datenbank. In der Shell dient recsel zum Suchen von Datensätzen. recsel -e "Title ~ 'Nice'" sucht alle Datensätze, die im Titel-Feld das Wort "Nice" enthalten (Listing 5). Die Tilde zwischen dem Schlüsselwort Title und der Zeichenkette Nice, die in Hochkommata stehen muss, bewirkt, dass jedes Auftreten der Zeichenkette als Treffer gilt ("soft match"). Mit einem Gleichheitszeichen finden Sie nur exakte, vollständige Übereinstimmungen ("hard match").

Listing 5

$ recsel -e "Title ~ 'Nice'" movies.rec
Id: 538
Title: Mr. Nice Guy
...
Id: 539
Title: Mr. Nice Guy
...
Id: 540
Title: Mr. Nice Guy - Uncut
...

Bei der veränderten Datenbank movies1.rec findet recsel zwei unterschiedliche Datensatztypen und meldet dies (Listing 6). Nach der Angabe eines Typs liefert das Tool das korrekte Ergebnis.

Listing 6

$ recsel -e "Title ~ 'Nice'" movies.rec
recsel: Fehler: Verschiedene Datensatztypen gefunden. Bitte mit -t einen angeben.
$ recsel -t movies -e "Title ~ 'Nice'" movies1.rec
Id: 538
Title: Mr. Nice Guy
...
Id: 539
Title: Mr. Nice Guy
...

Für den Typ movies1 liefert die Abfrage aus Listing 7 den fehlenden Eintrag. Dieselbe Abfrage ließe sich übrigens direkt im Emacs bewerkstelligen: [L] aktiviert die Suchfunktion, [Umschalt]+[E] die Suchmethode. Alle weiteren Parameter fragt Emacs dann ab. [Eingabe] übernimmt die Angaben.

Listing 7

$ recsel -t movies1 -e "Title ~ 'Nice'" movies1.rec
Id: 540
Title: Mr. Nice Guy - Uncut
...

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

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

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

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

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...