Фільтр — це комп'ютерна програма чи підпрограма обробки потоку, що створює інший потік. У той час як один фільтр може бути використаний індивідуально, вони часто нанизуються один на одного для формування конвеєра.

Деякі операційні системи як Unix багаті на програми-фільтри. Windows 7 та пізніші версії також багаті на фільтри, оскільки вони містять в собі Windows PowerShell. Для порівняння, однак, кілька фільтрів вбудовано в cmd.exe (оригінальний інтерфейс командного рядка у Windows), більшість з яких мають значні удосконалення в порівнянні з подібними командами фільтрів, що були доступні в MS-DOS. OS X включає фільтри з основної бази Unix, але також має і Automator, який дозволяє фільтрам (відомим тут як «Дії») нанизуватися один на одного для формування конвеєру.

Unix ред.

В Unix і Unix-подібних операційних системах фільтр являє собою програму, яка отримує більшу частину своїх даних із стандартного введення (головний вхідний потік) і пише свої основні результати в стандартне виведення (головний вихідний потік). Додаткове введення може надійти з параметрів командного рядка чи конфігураційних файлів, в той час як додаткове виведення може піти на стандартне виведення помилок. Синтаксис команди для отримання даних з пристрою чи файлу (а не стандартного введення) — це оператор введення (<). Аналогічно, для надсилання даних на пристрій чи файл (а не на стандартне виведення) — це оператор виведення (>). Для приєднання рядків даних до вихідного файлу, що вже існує, можна використовувати оператор додавання (>>). Фільтри можуть нанизуватись один на одного, формуючи конвеєр, за допомогою оператора конвеєру, так званої «труби» («|»). Цей оператор означає, що основне виведення команди зліва передається як основне введення команді справа.

Філософія Unix закликає об'єднувати меленькі, дискретні інструменти для виконання більших завдань. Класичним фільтром в Unix є grep Кена Томпсона, який Дуглас Макілрой процитував як «інструмент, що безповоротно вкорінений в світогляд» операційної системи, з пізнішими інструментами, що імітують його.[1] В найпростішому випадку grep виводить всі рядки, що містять рядок символів на свій потік виведення. Нижче наведено приклад:

cut -d : -f 1 /etc/passwd | grep foo

Це дозволить знайти всіх зареєстрованих користувачів, які містять «foo» в своєму імені користувача, використовуючи команду cut, щоб взяти перше поле (ім'я користувача) з кожного рядка в системному файлі паролів Unix і передавши це все як ввід для grep, який шукатиме в цьому вводі рядки, що містять рядок символів «foo» і передасть це на вивід.

Загальні програми-фільтри в Unix: cat, cut, grep, head, sort, uniq і tail. Програми на кшталт awk та sed можуть бути використані для створення досить складних фільтрів, тому що вони є повністю програмованими. Фільтри Unix можуть також використовуватися фахівцями, що представляють науку про дані для проведення швидкого огляду файлового набору даних.[2]

Список програм-фільтрів в Unix ред.

DOS ред.

На комп'ютерах, що базуються на операційній системі MS-DOS, з ранніх днів двома стандартними фільтрами є find та sort.

Приклади:

find "ключове_слово" < вхідний_файл > вихідний_файл
sort "ключове_слово" < вхідний_файл > вихідний файл
find /v "ключове_слово < вхідний_файл | sort > вихідний_файл

Такі фільтри можна використовувати в пакетних файлах (*.bat, *.cmd тощо).

Для використання в тій же самій оболонці операційної системи доступно це багато фільтрів окрім тих, що вбудовані в Windows. Деякі з них є безкоштовними, деякі умовно-безкоштовними, а деякі є комерційними програмами. Багато з них імітують функції і особливості Unix-фільтрів. Деякі програми-фільтри мають графічний інтерфейс (GUI), що дозволяє користувачами створювати індивідуальні фільтри, які підходять для їхньої спеціальної обробки даних  та/або добування даних.

Windows ред.

Командний рядок Windows успадкував команди MS-DOS, деякі поліпшив і кілька додав. Наприклад, Windows Server 2003 має шість консольних програм-фільтрів для модифікування Active Directory, які можуть з'єднуватись за допомогою конвеєра: DSAdd, DSGet, DSMod, DSMove, DSRm and DSQuery.[3]

Windows PowerShell додає весь набір фільтрів, відомих як «командлети» які можуть бути з'єднані між собою через конвеєр, окрім кількох простих, наприклад Clear-Screen. Наведений приклад отримає список файлів в папці C:\Windows, отримає розмір кожного і відсортує за розміром в порядку зменшення. Це показує, як три фільтри (Get-ChildItem, ForEach-Object та Sort-Object) з'єднуються через конвеєр.

Get-ChildItem C:\Windows | ForEach-Object { $_.length } | Sort-Object -Descending

Виноски ред.

  1. McIlroy, M. D. (1987). (англ.)
  2. Data Analysis with the Unix Shell [Архівовано 22 січня 2016 у Wayback Machine.] — Bernd Zuther, comSysto GmbH, 2013(англ.)
  3. Holme, Dan; Thomas, Orin (2006). Managing And Maintaining a Microsoft Windows Server 2003 Environment (англ.). Microsoft Press. ISBN 978 0735622890.

Див. також ред.