SCOLS-FILTER(5)

الاسم
scols-filter - بناء جملة تعبيرات مرشح libsmartcols

الصياغة

    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]*

الوصف

يمكن استخدام تعبير المرشح بواسطة التطبيقات المرتبطة بمكتبة libsmartcols لترشيح بيانات المخرجات. يمكن للتطبيق استخدام المرشح قبل جمع كافة البيانات للمخرجات لتقليل الموارد وتحسين الأداء. وهذا يجعل مرشح scols أكثر فاعلية من grep(1) على المخرجات الكاملة. على سبيل المثال

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

يساعد lsblk(1) على عدم قراءة اللصائق (LABELs) لكافة الأجهزة الكتلية من udevd أو libblkid، بل قراءتها فقط للجهاز sda1.

يمكن أيضاً استخدام المرشح للأعمدة غير المستخدمة في المخرجات.

ملاحظات على الصياغة

يتكون التعبير من الحواضن (holders)، والمعاملات (params)، والعوامل (operators).

نوع holder المدعوم حالياً هو اسم العمود فقط. يجب استخدام الاسم بدون علامات اقتباس. قبل التقييم، يربط التطبيق أسماء الأعمدة في التعبير المعطى بأعمدة جدول المخرجات ويخصص نوع بيانات العمود لـ holder. النوع المبدئي هو "string".

المعامل param مخصص لتمثيل قيمة مباشرة. أنواع البيانات المتاحة حالياً هي integer وfloat وstring وboolean.

يعمل العامل مع مُعامل واحد أو مُعاملين. للعامل توقعات حول أنواع البيانات لمعاملاته. إعطاء نوع بيانات غير متوقع للعامل يسبب خطأً في القواعد. يمكن للمكتبة التحويل بين أنواع البيانات، والنوع المفضل دائماً هو النوع المحدد بواسطة param وفي حالة وجود تعبير يحتوي على عدد وعدد عائم، فإن المفضل هو العائم.

العوامل التي تأخذ مُعاملين هي and و`or` و`eq` و`ne` و`le` و`lt` و`ge` و`gt` و`=~` و`!~. للعوامل المسماة أبجدياً أسماء مستعارة بنمط لغة C: `&& و`||` و`==` و`!=` و`<` و`⇐` و`>=` و`>`.

! هو العامل الوحيد الذي يأخذ مُعاملاً واحداً. إذا لم يُحدد أي عامل، يكون التعبير صحيحاً (true) إذا لم يكن param أو holder فارغين. على سبيل المثال --filter NAME سيعيد الأسطر التي لا يكون فيها العمود NAME فارغاً.

=~ و !~ مخصصان لمطابقة التعبيرات النمطية؛ إذا كانت السلسلة النصية على الجانب الأيمن تطابق (أو لا تطابق في حالة !~) تعبيراً نمطياً على الجانب الأيسر، تكون النتيجة صحيحة. يجب أن يكون المُعامل في الجانب الأيمن سلسلة نصية صريحة.

ترتيب الأسبقية بين المعاملات هو or و and و eq و ne و le و gt و ge و =~ و !~ و not.

القيود

بخصوص القيم من نوع float و integer ، يدعم محرك التصفية الأرقام غير السالبة فقط. نوع integer هو عدد غير مُوقع بطول 64 بت، ونوع float هو عشري طويل (long double). قد يتبع integer لاحقات مضاعفة مثل KiB و GiB و TiB و PiB و EiB و ZiB و YiB (اللاحقة "iB" اختيارية، فعلى سبيل المثال، "K" لها نفس معنى "KiB").

المؤلفين

بناءً على التنفيذ الأصلي من

التبليغ عن الأخطاء

لتقارير العِلل، استخدم

التوفر

المكتبة libsmartcols جزء من حزمة util-linux منذ الإصدار 2.25. يمكن تنزيلها من