SCOLS-FILTER(5)

NUME
scols-filter - sintaxa pentru expresiile de filtrare libsmartcols

SINTAXĂ

    expr: param
          | ( expr )
          | expr && expr | expr AND expr
          | expr || expr | expr OR expr
          | !expr        | NOT expr
          | expr == expr | expr EQ expr
          | expr != expr | expr NE expr
          | expr >= expr | expr GE expr
          | expr <= expr | expr LE expr
          | expr >  expr | expr GT expr
          | expr <  expr | expr LT expr
          | expr =~ șir
          | expr !~ șir
    param: integer
          | float
          | șir
          | boolean
          | holder
    integer: [0-9]*
          | [0-9]*[KMGTPEZY]
          | [0-9]*[KMGTPEZY]iB
    float: integer.integer
    boolean: "true" | "false" | "TRUE" | "FALSE"
    șir: "[^\n\"]*" | '[^\n\']*'
    holder: [a-zA-Z][a-zA-Z_.%:/\-0-9]*

DESCRIERE

Expresia filtrului poate fi utilizată de aplicația legată cu libsmartcols pentru a filtra datele de ieșire. Aplicația poate utiliza filtrul înainte de a aduna toate datele pentru ieșire pentru a reduce resursele și a îmbunătăți performanța. Acest lucru face ca filtrul scols să fie mai eficient decât grep(1) pe toată ieșirea. De exemplu

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

ajută lsblk(1) să nu citească LABEL-urile pentru toate dispozitivele bloc din udevd sau libblkid, ci să le citească doar pentru dispozitivul sda1.

Filtrul poate fi utilizat și pentru coloanele care nu sunt utilizate în ieșire.

NOTE SINTAXĂ

O expresie constă din titulari(holders), parametri și operatori.

Tipul „holde” (titular) acceptat în prezent este doar numele coloanei. Numele trebuie să fie utilizat fără ghilimele. Înainte de evaluare, aplicația asociază numele coloanelor din expresia dată coloanelor tabelului de ieșire și atribuie tipul de date al coloanei titularului. Tipul implicit este „string” (șir).

Parametrul „param” este destinat reprezentării directe a unei valori. Tipurile de date acceptate în prezent sunt „integer”, „float”, „string” și „boolean”.

Un operator lucrează cu unul sau doi operanzi. Un operator are o așteptare cu privire la tipul (tipurile) de date ale operanzilor săi. Acordarea unui tip de date neașteptat unui operator provoacă o eroare de sintaxă. Biblioteca poate face distribuția între tipuri de date, preferința fiind întotdeauna tipul specificat de „param”, iar în cazul unei expresii cu număr și „float”, preferința este „float”.

Operatorii care acceptă doi operanzi sunt „and”, „or”, „eq”, „ne”, „le”, „lt”, „ge”, „gt”, „=~”, „!~”. Operatorii numiți alfabetic au un alias în limbaj C: „&&”, „||”, „==”, „!=”, „<”, „⇐”, „>=” și „>”.

„!” este singurul operator care are un singur operand. Dacă nu este specificat niciun operator, atunci expresia este adevărată dacă parametrul „param” sau titularul „holder” nu sunt goale. De exemplu, „--filter NUME” va returna liniile în care coloana NUME nu este goală.

„=~” și „!~” sunt pentru potrivirea expresiei regulate; dacă un șir de caractere din partea dreaptă se potrivește (sau nu se potrivește pentru „!~”) cu o expresie regulată din partea stângă, rezultatul este true (adevărat). Operandul din partea dreaptă trebuie să fie un șir literal.

Prioritatea operatorilor este „or”, „and” și „eq”, „ne”, „le”, „gt”, „ge”, „=~”, „!~”, „not”.

LIMITĂRI

În ceea ce privește valorile tip „float” și „integer”, motorul de filtrare acceptă numai numere ne-negative. „integer” este un număr pe 64 de biți fără semn, iar „float” este un număr dublu lung. „integer” poate fi urmat de sufixele multiplicative KiB, GiB, TiB, PiB, EiB, ZiB și YiB („iB” este opțional, de exemplu, „K” are aceeași semnificație ca „KiB”).

AUTORI

Pe baza implementării inițiale de la

RAPORTAREA ERORILOR

Pentru rapoarte de eroare, folosiți

DISPONIBILITATE

Biblioteca libsmartcols face parte din pachetul util-linux începând cu versiunea 2.25. Acesta poate fi descărcat de la