LFCS: как использовать команду «sed» GNU для создания, редактирования и манипулирования файлами в Linux -- LFCS часть 1

LFCS: как использовать команду «sed» GNU для создания, редактирования и манипулирования файлами в Linux — LFCS часть 1

LFCS

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

Серия будет называться ​​«Подготовка к LFCS (Linux Foundation Certified Sysadmin)» и будет включать в себя части с 1 по 20. Первым делом мы рассмотрим следующие темы для Ubuntu, CentOS и openSUSE:

Важно: из-за изменений в требованиях к сертификации LFCS, действующих с 2 февраля 2016 года, мы включаем в это руководство следующие темы, необходимые для получения сертификации. Чтобы подготовиться к этому экзамену, мы настоятельно рекомендуем вам использовать это руководство по LFCE.

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

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

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

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

# command > file
# command1 | command2

 

Поскольку оператор перенаправления создает или перезаписывает файлы без каких-либо дополнительных уведомлений, мы должны использовать его с особой осторожностью. Одним из преимуществ конвейера в системах Linux и UNIX является отсутствие промежуточного файла, связанного с конвейером, — первая строка команды не записывается в файл, а лишь считывается второй командой.

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

LFCS: как использовать команду «sed» GNU для создания, редактирования и манипулирования файлами в Linux -- LFCS часть 1

 

Использование sed

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

Самым простым (и популярным) использованием sed является замена символов. Начнем с изменения каждого вхождения нижнего регистра «у» на «Y» верхнего регистра и перенаправления вывода в ahappychild2.txt. Опция « указывает, что sed должен выполнять подстановку для всех экземпляров в каждой строке файла. Если эта опция не задействована, sed заменит только первое вхождение в каждой строке.

Основной синтаксис:

# sed ‘s/term/replacement/flag’ file

 

Наш пример:

# sed ‘s/y/Y/g’ ahappychild.txt > ahappychild2.txt

 

cat-command-example

 

 

Если вы хотите найти или заменить специальный символ (например: /, \, &), вам нужно избегать его в терминах или заменяющих строках с обратной косой чертой.

В этом примере мы заменим слово «and» на амперсанд (&). Также мы заменим слово «I» на «You«, когда первое будет найдено в начале строки.

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

 

LFCS: как использовать команду «sed» GNU для создания, редактирования и манипулирования файлами в Linux -- LFCS часть 1

 

 

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

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

Другое использование команды 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) пустые строки или те, которые начинаются с # (символ | указывает логическое ИЛИ между двумя регулярными выражениями).

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

 

sed-match-string

 

 

Команда uniq

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

Пример

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

# du -sch /var/* | sort –h

 

LFCS: как использовать команду «sed» GNU для создания, редактирования и манипулирования файлами в Linux -- LFCS часть 1

 

 

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

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

 

Count-Numbers-in-File

 

 

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

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

 

Find-Unique-Records-in-File

 

 

Команда grep

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

Примеры

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

# grep -i gacanepa /etc/passwd

 

LFCS: как использовать команду «sed» GNU для создания, редактирования и манипулирования файлами в Linux -- LFCS часть 1

 

 

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

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

 

List-Content-Using-grep

 

 

Читайте также: 12 примеров команды «grep»

 

 

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

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

Примеры

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

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

 

Sort-Strings-in-File

 

 

Замените разделитель на выходе ls -l на один пробел (‘ ‘).

# ls -l | tr -s ' '

 

LFCS: как использовать команду «sed» GNU для создания, редактирования и манипулирования файлами в Linux -- LFCS часть 1

 

 

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

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

Пример

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

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

 

Extract-User-Accounts

 

 

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

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

 

LFCS: как использовать команду «sed» GNU для создания, редактирования и манипулирования файлами в Linux -- LFCS часть 1

 

 

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

 

Итоги

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

 

 

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University.

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
LFCS

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Самое читаемое
Меню