Поиск по сайту:

LFCS №1: Как использовать команду sed для манипуляций с файлами в Linux


Linux Foundation объявил о сертификации LFCS (Linux Foundation Certified Sysadmin) – новой программе, цель которой – помочь людям во всем мире получить сертификат по базовым и промежуточным задачам системного администрирования для систем Linux.

Это включает в себя поддержку работающих систем и служб, а также устранение неполадок и анализ из первых рук, а также разумное принятие решений для передачи проблем инженерным группам.

По состоянию на последнюю редакцию от 11 августа 2023 г. мы тщательно учли области и компетенции в соответствии с датой вступления в силу 11 мая 2023 г., официально заявленной Фонд Linux.

Серия будет называться «Подготовка к LFCS (Сертифицированному системному администратору Linux Foundation), части с 1 по 33», и будет охватывать следующие темы:

Part 1

Как использовать команду Sed для управления файлами в Linux

Part 2

Как установить и использовать Vi/Vim в Linux

Part 3

Как сжать файлы и каталоги и найти файлы в Linux

Part 4

Разбиение устройств хранения на разделы, форматирование файловых систем и настройка раздела подкачки

Part 5

Монтирование/отключение локальных и сетевых (Samba и NFS) файловых систем в Linux

Part 6

Сборка разделов в виде RAID-устройств – создание резервных копий системы и управление ими

Part 7

Управление процессом запуска системы и службами (SysVinit, Systemd и Upstart).

Part 8

Как управлять пользователями и группами, разрешениями для файлов и доступом к Sudo

Part 9

Управление пакетами Linux с помощью Yum, RPM, Apt, Dpkg, Aptitude и Zypper

Part 10

Изучение основных сценариев оболочки и устранение неполадок файловой системы

Part 11

Как управлять LVM и создавать его с помощью команд vgcreate, lvcreate и lvextend

Part 12

Как изучить Linux с установленной справочной документацией и инструментами

Part 13

Как настроить и устранить неполадки загрузчика Grand Unified Bootloader (GRUB)

Part 14

Мониторинг использования ресурсов процессов Linux и установка ограничений процессов для каждого пользователя

Part 15

Как установить или изменить параметры времени выполнения ядра в системах Linux

Part 16

Реализация обязательного контроля доступа с помощью SELinux или AppArmor в Linux

Part 17

Как настроить списки контроля доступа (ACL) и дисковые квоты для пользователей и групп

Part 18

Установка сетевых служб и настройка автоматического запуска при загрузке

Part 19

Полное руководство по настройке FTP-сервера для анонимного входа в систему

Part 20

Настройте базовый DNS-сервер рекурсивного кэширования и настройте зоны для домена

Part 21

Как установить, защитить и настроить производительность сервера базы данных MariaDB

Part 22

Как установить и настроить NFS-сервер для общего доступа к файловой системе

Part 23

Как настроить Apache с виртуальным хостингом на основе имени с сертификатом SSL

Part 24

Как настроить брандмауэр Iptables для обеспечения удаленного доступа к службам в Linux

Part 25

Как превратить Linux в маршрутизатор для статической и динамической обработки трафика

Part 26

Как настроить зашифрованные файловые системы и обмен данными с помощью инструмента Cryptsetup

Part 27

Как отслеживать использование системы, сбои в работе и устранять неполадки серверов Linux

Part 28

Как настроить сетевой репозиторий для установки или обновления пакетов

Part 29

Как проверить производительность, безопасность сети и устранить неполадки

Part 30

Как устанавливать виртуальные машины и контейнеры и управлять ими

Part 31

Изучите основы Git для эффективного управления проектами

Part 32

Руководство для начинающих по настройке адресов IPv4 и IPv6 в Linux

Part 33

Руководство для начинающих по созданию сетевых соединений и мостов в Ubuntu

Этот пост является частью 1 серии из 33 учебных пособий, в которой будут рассмотрены необходимые области и компетенции, необходимые для сертификационного экзамена LFCS. При этом запустите свой терминал, и приступим.

Обработка текстовых потоков в Linux

Linux обрабатывает ввод и вывод программ как потоки (или последовательности) символов. Чтобы начать понимать перенаправление и каналы, мы должны сначала понять три наиболее важных типа потоков ввода-вывода (ввода и вывода), которые на самом деле являются специальными файлами (по соглашению в UNIX и Linux, потоками данных и периферийными устройствами или файлами устройств). также рассматриваются как обычные файлы).

Разница между > (оператор перенаправления) и | (оператор конвейера) заключается в том, что первый соединяет команду с файлом, а второй соединяет вывод команды с другим команда.

command > file
command1 | command2

Поскольку оператор перенаправления создает или перезаписывает файлы автоматически, мы должны использовать его с особой осторожностью и никогда не путать его с конвейером.

Одним из преимуществ каналов в системах Linux и UNIX является отсутствие промежуточного файла, связанного с каналом: стандартный вывод первой команды не записывается в файл, а затем не читается второй командой.

Для следующих практических упражнений мы будем использовать стихотворение «Счастливый ребенок» (анонимный автор).

Использование команды sed

Имя sed является сокращением от потокового редактора. Для тех, кто не знаком с этим термином, редактор потока используется для выполнения основных преобразований текста во входном потоке (файле или входных данных из конвейера).

Изменить нижний регистр на верхний в файле

Самым простым (и популярным) использованием sed является замена символов. Мы начнем с замены всех вхождений строчной буквы y на ПРОПИСНУЮ Y и перенаправления вывода в ahappychild2.txt.

Флаг g указывает, что sed должен выполнить замену для всех экземпляров термина в каждой строке файла. Если этот флаг опущен, sed заменит только первое вхождение термина в каждой строке.

Основной синтаксис Sed:
sed ‘s/term/replacement/flag’ file
Наш пример:
sed ‘s/y/Y/g’ ahappychild.txt > ahappychild2.txt

Поиск и замена слова в файле

Если вы хотите найти или заменить специальный символ (например, /, \, &), вам необходимо экранировать его в термине или строки замены с обратной косой чертой.

Например, мы заменим амперсанд словом и. При этом мы заменим слово I на You, когда первое слово встречается в начале строки.

sed 's/and/\&/g;s/^I/You/g' ahappychild.txt

В приведенной выше команде ^ (знак каретки) — это хорошо известное регулярное выражение, которое используется для обозначения начала строки.

Как видите, мы можем объединить две или более команды подстановки (и использовать внутри них регулярные выражения), разделив их точкой с запятой и заключив набор в одинарные кавычки.

Распечатать выбранные строки из файла

Другое использование sed — отображение (или удаление) выбранной части файла. В следующем примере мы отобразим первые 5 строк /var/log/messages за 8 июня.

sed -n '/^Jun  8/ p' /var/log/messages | sed -n 1,5p

Обратите внимание, что по умолчанию sed печатает каждую строку. Мы можем переопределить это поведение с помощью параметра -n, а затем указать sed печатать (обозначается p) только ту часть файла (или канала), которая соответствует шаблону. (8 июня в начале строки в первом случае и строки с 1 по 5 включительно во втором случае).

Наконец, при проверке сценариев или файлов конфигурации может быть полезно проверить сам код и исключить комментарии. Следующая однострочная команда sed удаляет (d) пустые строки или строки, начинающиеся с # (символ | указывает логическое значение OR< между двумя регулярными выражениями).

sed '/^#\|^$/d' apache2.conf

уникальная команда

Команда uniq позволяет нам сообщать или удалять повторяющиеся строки в файле, записывая по умолчанию в стандартный вывод. Следует отметить, что uniq не обнаруживает повторяющиеся строки, если они не являются соседними.

Таким образом, uniq обычно используется вместе с предшествующим sort (который используется для сортировки строк текстовых файлов). По умолчанию sort принимает первое поле (разделенное пробелами) в качестве ключевого поля. Чтобы указать другое ключевое поле, нам нужно использовать опцию -k.

Примеры команд Uniq

Команда du -sch /path/to/directory/* возвращает использование дискового пространства по подкаталогам и файлам в указанном каталоге в удобочитаемом формате (также показывает общее количество по каждому каталогу) и не упорядочивайте вывод по размеру, но по подкаталогу и имени файла.

Мы можем использовать следующую команду для сортировки по размеру.

du -sch /var/* | sort –h

Вы можете подсчитать количество событий в журнале по дате, указав uniq выполнить сравнение, используя первые 6 символов (-w 6) каждой строки (где дата указан) и добавляя к каждой выходной строке количество вхождений (-c) с помощью следующей команды.

cat /var/log/mail.log | uniq -c -w 6

Наконец, вы можете комбинировать sort и uniq (как обычно). Рассмотрим следующий файл со списком жертвователей, датой и суммой пожертвования. Предположим, мы хотим знать, сколько существует уникальных доноров.

Мы будем использовать следующую команду cat, чтобы вырезать первое поле (поля разделяются двоеточием), отсортировать по имени и удалить повторяющиеся строки.

cat sortuniq.txt | cut -d: -f1 | sort | uniq

команда grep

Команда grep ищет текстовые файлы или (вывод команды) на наличие указанного регулярного выражения и выводит любую строку, содержащую совпадение со стандартным выводом.

Примеры команд Grep

Отобразить информацию из /etc/passwd для пользователя gacanepa, игнорируя регистр.

grep -i gacanepa /etc/passwd

Показать все содержимое /etc, имя которого начинается с rc, за которым следует любое число.

ls -l /etc | grep rc[0-9]

Использование команды tr

Команда tr может использоваться для перевода (изменения) или удаления символов из стандартного ввода и записи результата в стандартный вывод.

Измените все строчные буквы на прописные в файле sortuniq.txt.

cat sortuniq.txt | tr [:lower:] [:upper:]

Сожмите разделитель в выводе ls –l до одного пробела.

ls -l | tr -s ' '

Вырезать использование команды

Команда вырезания извлекает части входных строк (из стандартного ввода или файлов) и отображает результат на стандартном выводе в зависимости от количества байтов (опция -b) и символов (-c) или поля (-f).

В этом последнем случае (в зависимости от полей) разделителем полей по умолчанию является табуляция, но можно указать другой разделитель с помощью параметра -d.

Примеры команд вырезания

Извлеките учетные записи пользователей и назначенные им оболочки по умолчанию из /etc/passwd (опция –d позволяет нам указать разделитель полей и –f Переключатель указывает, какие поля будут извлечены.

cat /etc/passwd | cut -d: -f1,7

Подводя итог, мы создадим текстовый поток, состоящий из первого и третьего непустых файлов вывода команды last. Мы будем использовать grep в качестве первого фильтра для проверки сеансов пользователя gacanepa, а затем сжать разделители до одного пробела (tr -s ' ' ).

Далее мы извлекем первое и третье поля с помощью cut и, наконец, отсортируем по второму полю (в данном случае IP-адресам), показывающему уникальность.

last | grep gacanepa | tr -s ' ' | cut -d' ' -f1,3 | sort -k2 | uniq

Приведенная выше команда показывает, как можно объединить несколько команд и каналов, чтобы получить отфильтрованные данные в соответствии с нашими желаниями. Не стесняйтесь также запускать его по частям, чтобы увидеть вывод, который передается по конвейеру от одной команды к другой (кстати, это может быть отличным опытом обучения!).

Краткое содержание

Хотя этот пример (вместе с остальными примерами в текущем руководстве) на первый взгляд может показаться не очень полезным, он является хорошей отправной точкой для начала экспериментов с командами, которые используются для создания, редактирования и управления файлами в Linux. командная строка.

Не стесняйтесь оставлять свои вопросы и комментарии ниже – они будут вам очень признательны!

Электронная книга LCS уже доступна для покупки. Закажите копию сегодня и начните свой путь к тому, чтобы стать сертифицированным системным администратором Linux!

Product Name Price Buy
The Linux Foundation’s LFCS Certification Preparation Guide $19.99 [Buy Now]

И последнее, но не менее важное: рассмотрите возможность покупки ваучера на экзамен по следующим ссылкам, чтобы заработать нам небольшую комиссию, которая поможет нам обновлять эту книгу.