Фільтр (програмне забезпечення)

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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

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

Unix[ред. | ред. код]

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

Філософія Unix[en] закликає обʼєднувати меленькі, дискретні інструменти для виконання більших завдань. Класичним фільтром в 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 January 2016[Дата не збігається] у Wayback Machine. - Bernd Zuther, comSysto GmbH, 2013(англ.)
  3. Holme, Dan; Thomas, Orin (2004). (англ.)

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