Scroll to navigation

SCOLS-FILTER(5) Filformat och konventioner SCOLS-FILTER(5)

NAMN

scols-filter - syntax för libsmartcols filteruttryck

SYNTAX

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 =~ string
| expr !~ string param: integer
| float
| string
| boolean
| holder integer: [0-9]*
| [0-9]*[KMGTPEZY]
| [0-9]*[KMGTPEZY]iB float: integer.integer boolean: "true" | "false" | "TRUE" | "FALSE" string: "[^\n\"]*" | '[^\n\']*' holder: [a-zA-Z][a-zA-Z_.%:/\-0-9]*

BESKRIVNING

Filteruttrycket kan användas av program som är länkade med libsmartcols för att filtrera utdata. Programmet kan använda filtret innan det samlar in alla data för utmatningen för att minska resursåtgången och förbättra prestandan. Detta gör scols-filter effektivare än grep(1) på hela utmatningen. Till exempel


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

hjälper lsblk(1) att endast läsa LABEL från udevd eller libblkid för enheten sda1, i stället för för alla blockenheter.

Filtret kan också användas för kolumner som inte används i utdata.

SYNTAXANTECKNINGAR

Ett uttryck består av holders, params och operatorer.

Den enda typ av holder som för närvarande stöds är kolumnnamn. Namnet ska användas utan citattecken. Före utvärderingen mappar programmet kolumnnamnen i uttrycket till utdatatabellens kolumner och tilldelar hållaren kolumnens datatyp. Standardtypen är ”string”.

param används för att representera ett värde direkt. De datatyper som för närvarande stöds är integer, float, string och boolean.

En operator arbetar med en eller två operander och förväntar sig vissa datatyper för dem. En oväntad datatyp orsakar ett syntaxfel. Biblioteket kan konvertera mellan datatyper. Den typ som anges av param föredras alltid. I uttryck med både heltal och flyttal föredras flyttal.

Operatorer som tar två operander är and, or, eq, ne, le, lt, ge, gt, =~, !~. Alfabetiskt namngivna operatorer har C-språksanpassade alias: &&, ||, ==, !=, <, ⇐, >= och >.

! är den enda operatorn som tar en operand. Om ingen operator anges är uttrycket sant om param eller holder inte är tomma. Till exempel returnerar --filter NAME rader där kolumnen NAME inte är tom.

=~ och !~ används för matchning med reguljära uttryck. Resultatet är sant om en sträng på höger sida matchar (eller inte matchar, för !~) ett reguljärt uttryck på vänster sida. Operanden på höger sida måste vara en strängliteral.

Prioriteterna inom operatorer är or, and, och eq, ne, le, gt, ge, =~, !~, not.

BEGRÄNSNINGAR

När det gäller typvärdena float och integer stöder filtermotorn endast icke-negativa tal. integer är ett osignerat 64-bitars tal och float är en lång dubbel. Heltal kan följas av de multiplikativa suffixen KiB, GiB, TiB, PiB, EiB, ZiB och YiB (iB är valfritt, t.ex. har "K" samma betydelse som "KiB").

UPPHOVSPERSONER

Karel Zak <kzak@redhat.com>

Baserat på originalimplementationen från Masatake YAMATO <yamato@redhat.com>.

FELRAPPORTERING

För felrapporter, använd felhanteraren <https://github.com/util-linux/util-linux/issues>.

TILLGÄNGLIGHET

Biblioteket libsmartcols är en del av paketet util-linux sedan version 2.25. Det kan laddas ner från Linux Kernel Archive <https://www.kernel.org/pub/linux/utils/util-linux/>.

2026-09-25 util-linux 2.42.4