- Linux — Фильтры
- Вступление
- Фундаментальные основы Linux. Часть IV. Программные каналы и команды
- Глава 17. Фильтры
- Фильтр cat
- Фильтр tee
- Фильтр grep
- Фильтр cut
- Фильтр tr
- Фильтр wc
- Фильтр sort
- Фильтр uniq
- Фильтр comm
- Фильтр od
- Фильтр sed
- Примеры конвейеров
- Практическое задание: фильтры
- Корректная процедура выполнения практического задания: фильтры
- Команды фильтрации в Linux. head, tail, sort, nl, wc, cut, sed, uniq, tac
- Фильтры в Linux
- head
- tail
- sort
- nl
- wc
- cut
- sed
- uniq
- tac
- Вывод
Linux — Фильтры
Вступление
На этом занятии мы рассмотрели наиболее распространенные фильтры системы Linux. Команды, которые создаются для использования с каналом, часто называют фильтрами. Эти фильтры — очень маленькие программы, которые делают одну конкретную вещь очень эффективно. Их можно использовать как строительные блоки. Комбинация простых команд и фильтров в длинной трубе позволяет разрабатывать элегантные решения.
кошка
Когда между двумя каналами, команда cat ничего не делает (кроме помещения stdin на стандартный вывод).
тройник
Написание длинных каналов в Unix — это весело, но иногда вам могут потребоваться промежуточные результаты. Тройной фильтр помещает стандартный ввод в стандартный вывод, а также в файл. То есть, он почти такой же, как cat, за исключением того, что у него два идентичных выхода.
Grep
В Linux команда grep используется в качестве инструмента поиска и сопоставления с образцом. Наиболее распространенное использование grep — это фильтрация строк текста, содержащих (или не содержащих) определенную строку.
Вы можете написать это без кота.
Одним из наиболее полезных параметров grep является grep -i, который фильтрует без учета регистра.
Другой очень полезный параметр — это grep -v, который выводит строки, не соответствующие строке.
И, конечно, оба параметра можно комбинировать для фильтрации всех строк, не содержащих строку без учета регистра.
С grep -A1 также отображается одна строка после результата.
С grep -B1 за одну строку до результата также отображается.
С grep -C1 (context) также отображаются одна строка до и одна после. Все три параметра (A, B и C) могут отображать любое количество строк (например, A2, B4 или C20).
резать
Фильтр вырезания используется для вырезания выбранных полей (столбцов) каждой строки файла в зависимости от разделителя или количества байтов. Следующий код использует «cut» для фильтрации имени пользователя и идентификатора пользователя в файле / etc / passwd. Он использует двоеточие в качестве разделителя и выбирает поля 1 и 3.
При использовании пробела в качестве разделителя для выреза, вы должны заключить в кавычки пробел.
В этом примере используется cut, чтобы отобразить второй-седьмой символ / etc / passwd.
тр
Вы можете переводить символы с tr. Следующая команда показывает перевод всех вхождений ‘e’ в ‘E’.
Здесь мы устанавливаем все буквы в верхний регистр, определяя два диапазона.
Здесь мы переводим все новые строки в пробелы.
Фильтр tr -s также можно использовать для сжатия нескольких вхождений символа в одно.
Вы также можете использовать tr для «шифрования» текстов с помощью rot13.
В последнем примере для удаления символов используется tr -d.
Туалет
Команда wc используется для подсчета слов, строк и символов для каждого файла
Сортировать
Фильтр сортировки (сортировка по алфавиту) используется для сортировки строк текстовых файлов.
Но фильтр сортировки имеет много опций для настройки его использования. В этом примере показана сортировка разных столбцов (столбец 1 или столбец 2).
На приведенном ниже снимке экрана показана разница между сортировкой по алфавиту и числовой сортировкой (обе в третьей колонке).
уник
Команда uniq используется для пропуска повторяющихся строк в отсортированном списке.
uniq также может подсчитывать вхождения с помощью опции -c.
Прдч
Сравнивать потоки (или файлы) можно с помощью комм. По умолчанию comm выведет три столбца. В этом примере Abba, Cure и Queen находятся в обоих списках, Боуи и Свит только в первом файле, Тернер только во втором.
Вывод comm может быть легче читаться при выводе только одного столбца. Цифры указывают, какие выходные столбцы не должны отображаться.
О.Д.
Европейским людям нравится работать с символами ascii, но компьютеры хранят файлы в байтах. В приведенном ниже примере создается простой файл, а затем используется od для отображения содержимого файла в шестнадцатеричных байтах.
Этот же файл также может отображаться в восьмеричных байтах.
А вот файл в ascii (или обратно) символов.
СЕПГ
Sed — это потоковый редактор. Редактор потока используется для выполнения базовых преобразований текста в потоке ввода (файл или ввод из конвейера).
Добавьте g для глобальных замен (все вхождения строки в строке).
С помощью d вы можете удалить строки из потока, содержащего символ.
примеры труб
кто | Туалет
Сколько пользователей вошли в эту систему?
кто | вырезать | Сортировать
Показать отсортированный список зарегистрированных пользователей.
Показать отсортированный список зарегистрированных пользователей, но каждый пользователь только один раз.
grep | резать
Показать список всех учетных записей пользователей bash на этом компьютере. Аккаунты пользователей подробно объясняются позже.
Упражнение, практика и решение:
1. Поместите отсортированный список всех пользователей bash в bashusers.txt.
Код:
2. Разместите отсортированный список всех зарегистрированных пользователей в onlineusers.txt.
Код:
3. Составьте список всех имен файлов в / etc, которые содержат строку samba.
Код:
4. Создайте отсортированный список всех файлов в / etc, которые содержат строку samba без учета регистра.
Код:
5. Посмотрите на вывод / sbin / ifconfig. Напишите строку, которая отображает только IP-адрес и маску подсети.
Код:
6. Напишите строку, которая удаляет все не-буквы из потока.
Код:
7. Напишите строку, которая получает текстовый файл и выводит все слова в отдельной строке.
Код:
8. Напишите проверку орфографии в командной строке. (Может быть словарь в / usr / share /
dict /.)
Источник
Фундаментальные основы Linux. Часть IV. Программные каналы и команды
Глава 17. Фильтры
Команды, которые были реализованы для использования совместно с программными каналами , называются фильтрами . Эти фильтры реализуются в виде простейших программ, которые крайне эффективно выполняют одну определенную задачу. Исходя из всего вышесказанного, они могут использоваться в качестве строительных блоков при создании сложных конструкций.
В данной главе представлена информация о наиболее часто используемых фильтрах . В результате комбинирования простых команд и фильтров с использованием программных каналов могут быть созданы элегантные решения.
Фильтр cat
Фильтр tee
Фильтр grep
Фильтр cut
Фильтр tr
Фильтр wc
Фильтр sort
Фильтр uniq
Фильтр comm
Фильтр od
Фильтр sed
Примеры конвейеров
Конвейер who | wc
Конвейер who | cut | sort
Конвейер grep | cut
Практическое задание: фильтры
1. Сохраните отсортированный список пользователей командной оболочки bash в файле bashusers.txt.
2. Сохраните отсортированный список пользователей, осуществивших вход в систему, в файле onlineusers.txt.
3. Создайте список всех имен файлов из директории /etc , в которых содержится строка conf .
4. Создайте список всех имен файлов из директории /etc , в которых содержится строка conf вне зависимости от регистра символов.
5. Рассмотрите вывод утилиты /sbin/ifconfg . Создайте команду, с помощью которой будут выводиться исключительно IP-адреса и маски подсетей.
6. Создайте команду, которая позволит удалить все не относящиеся к буквенным символы из потока данных.
7. Создайте команду, которая будет принимать файл и выводить каждое слово из него в отдельной строке.
8. Разработайте систему проверки орфографии с интерфейсом командной строки. (Словарь должен находиться в директории /usr/share/dict/ .)
Корректная процедура выполнения практического задания: фильтры
1. Сохраните отсортированный список пользователей командной оболочки bash в файле bashusers.txt.
2. Сохраните отсортированный список пользователей, осуществивших вход в систему, в файле onlineusers.txt.
3. Создайте список всех имен файлов из директории /etc , в которых содержится строка conf .
4. Создайте список всех имен файлов из директории /etc , в которых содержится строка conf вне зависимости от регистра символов.
5. Рассмотрите вывод утилиты /sbin/ifconfg . Создайте команду, с помощью которой будут выводиться исключительно IP-адреса и маски подсетей.
6. Создайте команду, которая позволит удалить все не относящиеся к буквенным символы из потока данных.
7. Создайте команду, которая будет принимать файл и выводить каждое слово из него в отдельной строке.
8. Разработайте систему проверки орфографии с интерфейсом командной строки. (Словарь должен находиться в директории /usr/share/dict/ .)
Также вы можете добавить решение из вопроса номер 6 для удаления не относящихся к буквенным символов и фильтр tr -s ‘ ‘ для удаления лишних символов пробелов.
Источник
Команды фильтрации в Linux. head, tail, sort, nl, wc, cut, sed, uniq, tac
В статье мы рассмотрим множество команд для фильтрации. Изучение команд будет сопровождаться подробными примерами.
Фильтры в Linux
Фильтры — это способ получения необработанных данных, созданных другой программой или сохраненных в файле.
Эти фильтры имеют различные параметры командной строки, которые изменяют их поведение. В результате, всегда полезно проверить страницу руководства для фильтра.
В приведенных ниже примерах мы будем предоставлять данные для этих программ с помощью файла.
Для каждой из демонстраций ниже будет использоваться следующий файл в качестве примера. Этот файл примера содержит список содержимого, чтобы немного облегчить понимание примеров. Кроме того, файл фактически указан как путь, и поэтому вы можете использовать абсолютные и относительные пути, а также подстановочные знаки.
head
Head — это программа, которая печатает первые строки ввода. По умолчанию он напечатает первые 10 строк, но мы можем изменить это с помощью аргумента командной строки.
head [-количество строк для печати] [путь]
tail
Данная команда противоположна head. Tail — это команда, которая печатает последние строки ввода. По умолчанию он напечатает последние 10 строк, но мы можем изменить это с помощью аргумента командной строки.
tail [-количество строк для печати] [путь]
Выше было поведение tail по умолчанию. А ниже указывается заданное количество строк.
sort
Сортировка — это красиво и просто. По умолчанию сортировка выполняется в алфавитном порядке. Между тем, существует множество параметров, позволяющих изменить механизм сортировки. Кроме того, не забудьте проверить справочную страницу, чтобы увидеть все, что он может сделать.
sort [-options] [path]
nl
Обозначение чисел в Linux реализуется за счет команды nl.
nl [-options] [путь]
Вот еще несколько полезных опций командной строки.
В приведенном выше примере мы использовали 2 параметра командной строки. Первый -s указывает, что следует печатать после числа. С другой стороны, второй -w указывает, сколько отступов ставить перед числами. Для первого нам нужно было включить пробел как часть того, что было напечатано.
Поскольку пробелы обычно используются в качестве символов-разделителей в командной строке, нам нужен был способ указать, что пробел является частью нашего аргумента, а не просто между аргументами. Мы сделали это, включив аргумент в кавычки.
wc
wc обозначает количество слов, а также символы и строки. По умолчанию он подсчитывает все вышеперечисленное. Между тем, используя параметры командной строки, мы можем ограничить его только тем, что нам нужно.
wc [-options] [путь]
Иногда вам просто нужно одно из этих значений. -l даст нам только строки, -w даст нам слова, а -m даст нам символы.
Кроме того, Вы можете комбинировать аргументы командной строки.
cut
Cut — это хорошая команда, которую можно использовать, если ваш контент разделен на столбцы и вам нужны только определенные поля.
вырезать [-опции] [путь]
В нашем примере файла у нас есть данные в 3 столбцах. Допустим, мы хотели только первый столбец.
По умолчанию cut использует символ TAB в качестве разделителя для идентификации полей. Опция -f позволяет нам указать, какое поле мы бы хотели. Если нам нужно 2 или более полей, мы разделяем их запятой, как показано ниже.
sed
Sed расшифровывается как Stream Editor и позволяет эффективно выполнять поиск и замену наших данных. Это довольно мощная команда, но мы будем использовать ее здесь в ее базовом формате.
Инициал s обозначает замену и определяет действие, которое нужно выполнить. Между первой и второй косой чертой (/) мы размещаем то, что ищем. Затем между вторым и третьим слэшем, чем мы хотим его заменить.
uniq
Uniq означает уникальный, и его работа заключается в удалении повторяющихся строк из данных. Однако одно ограничение заключается в том, что эти линии должны быть смежными.
uniq [опции] [путь]
tac
Ребята из Linux известны своим забавным чувством юмора. Программа TAC на самом деле является CAT наоборот. Это было названо так, как это делает противоположность CAT. Получив данные, он напечатает последнюю строку первой, вплоть до первой строки.
Вывод
В данной статье мы ознакомились со следующими командами:
- head — просмотр первых n строк данных.
- tail — просмотр последних n строк данных.
- sort — организуйте данные в порядке.
- nl — напечатайте номера строк перед данными.
- wc — распечатать количество строк, слов и символов.
- cut — разрезать данные на поля и отображать только указанные поля.
- sed — сделайте поиск и замените данные.
- uniq — удалить дубликаты строк.
- tac — распечатайте данные в обратном порядке.
Источник