SCOLS-FILTER(5)

BEZEICHNUNG
scols-filter - Syntax für libsmartcols-Filterausdrücke

SYNTAX

    Ausdruck: param
          | ( Ausdruck )
          | Ausdruck && Ausdruck | Ausdruck AND Ausdruck
          | Ausdruck || Ausdruck | Ausdruck OR Ausdruck
          | !Ausdruck            | NOT Ausdruck
          | Ausdruck == Ausdruck | Ausdruck EQ Ausdruck
          | Ausdruck != Ausdruck | Ausdruck NE Ausdruck
          | Ausdruck >= Ausdruck | Ausdruck GE Ausdruck
          | Ausdruck <= Ausdruck | Ausdruck LE Ausdruck
          | Ausdruck >  Ausdruck | Ausdruck GT Ausdruck
          | Ausdruck <  Ausdruck | Ausdruck LT Ausdruck
          | Ausdruck =~ Zeichenkette
          | Ausdruck !~ Zeichenkette
    Parameter: Ganzzahl
          | Gleitkommazahl
          | Zeichenkette
          | Boolescher Wert
          | Platzhalter
    Ganzzahl: [0-9]*
          | [0-9]*[KMGTPEZY]
          | [0-9]*[KMGTPEZY]iB
    Gleitkommazahl: Ganzzahl,Ganzzahl
    boolesch: "true" | "false" | "TRUE" | "FALSE"
    Zeichenkette: "[^\n\"]*" | '[^\n\']*'
    Platzhalter: [a-zA-Z][a-zA-Z_.%:/\-0-9]*

BESCHREIBUNG

Der Filterausdruck kann von Anwendungen, die mit libsmartcols verknüpft sind, zum Filtern von Ausgabedaten verwendet werden. Die Anwendung kann den Filter verwenden, bevor sie alle Daten für die Ausgabe sammelt, um Ressourcen zu sparen und die Leistung zu verbessern. Dadurch ist der scols-Filter für die gesamte Ausgabe effektiver als grep(1). Beispiel:

     lsblk --output NAME,LABEL,FSTYPE --filter 'NAME=="sda1"'

hilft lsblk(1), LABELs nicht für alle blockorientierten Geräte aus udevd oder libblkid zu lesen, sondern nur für das Gerät sda1.

Der Filter kann auch für Spalten verwendet werden, die nicht für die Ausgabe vorgesehen sind.

HINWEISE ZUR SYNTAX

Ein Ausdruck besteht aus Platzhaltern, Parametern und Operatoren.

Der aktuell unterstützte Platzhalter-Typ ist nur der Spaltenname. Der Name muss ohne Anführungszeichen verwendet werden. Vor der Auswertung ordnet die Anwendung die Spaltennamen im angegebenen Ausdruck den Spalten der Ausgabetabelle zu und weist dem Platzhalter den Spaltendatentyp zu. Der Standardtyp ist »string«.

Der Parameter »param« dient zur direkten Darstellung eines Werts. Die derzeit unterstützten Datentypen sind »integer«, »float«, »string« und »boolean«.

Ein Operator arbeitet mit einem oder zwei Operanden. Er hat eine Erwartung an den Datentyp seiner Operanden. Die Angabe eines unerwarteten Datentyps führt zu einem Syntaxfehler. Die Bibliothek kann zwischen Datentypen konvertieren. Der bevorzugte Typ ist immer der durch »param« angegebene Typ. Bei Ausdrücken mit Zahlen und Gleitkommazahlen wird der Gleitkommatyp bevorzugt.

Operatoren mit zwei Operanden sind »and«, »or«, »eq«, »ne«, »le«, »lt«, »ge«, »gt«, »=~« und »!~«. Alphabetisch benannte Operatoren haben C-artige Aliase: »&&«, »||«, »==«, »!=«, »<«, »⇐«, »>=« und »>«.

»!« ist der einzige Operator, der einen Operanden akzeptiert. Wenn kein Operator angegeben ist, ist der Ausdruck wahr, sofern Parameter oder Platzhalter nicht leer sind. Beispielsweise gibt --filter NAME Zeilen zurück, in denen die Spalte NAME nicht leer ist.

»=~« und »!~« dienen zum Abgleichen regulärer Ausdrücke. Wenn eine Zeichenkette auf der rechten Seite auf einen regulären Ausdruck auf der linken Seite passt (oder nicht, wenn »!~« gilt), ist das Ergebnis wahr. Der Operand auf der rechten Seite muss ein Zeichenkettenliteral sein.

Die Rangfolge innerhalb der Operatoren ist »or«, »and« und »eq«, »ne«, »le«, »gt«, »ge«, »=~«, »!~«, »not«.

BESCHRÄNKUNGEN

Bei Werten vom Typ »float« und »integer« unterstützt die Filter-Engine nur nichtnegative Zahlen. »integer« ist eine vorzeichenlose 64-Bit-Zahl, »float« ist eine »long double«-Zahl. Dem »integer« können die multiplikativen Suffixe KiB, GiB, TiB, PiB, EiB, ZiB und YiB folgen (das »iB« ist optional, z. B. hat »K« die gleiche Bedeutung wie »KiB«).

AUTOREN

Basierend auf der ursprünglichen Implementierung von

FEHLER MELDEN

Nutzen Sie zum Melden von Fehlern das

VERFÜGBARKEIT

Die Bibliothek libsmartcols ist seit Version 2.25 Teil des Pakets util-linux, welches aus dem heruntergeladen werden kann.