15 полезных советов для системного администрирования Linux

15 полезных советов для системного администрирования Linux

LinuxТекстовые редакторыТерминал Linux

15 полезных советов для системного администрирования Linux. Каждый системный администратор должен ежедневно работать с простыми текстовыми файлами. Знание того, как просматривать определенные разделы, как заменить слова и как фильтровать контент из этих файлов, — это навыки, которые вам пригодятся, не прибегая к поиску в Google.

В этой статье мы рассмотрим sed, известный потоковый редактор, и поделимся 15 советами по его использованию для достижения целей, упомянутых ранее.

 

1. Просмотр диапазона строк документа

Такие инструменты, как head и tail, позволяют нам просматривать верхнюю и нижнюю части файла. Что если нам нужно просмотреть раздел в середине? Следующая команда вернет строки с 5 по 10 из myfile.txt:

# sed -n '5,10p' myfile.txt

 

 

2. Просмотр всего файла, кроме заданного диапазона

С другой стороны, возможно, что вы хотите напечатать весь файл, за исключением определенного диапазона. Чтобы исключить строки с 20 по 35 из myfile.txt, выполните:

# sed '20,35d' myfile.txt

 

 

3. Просмотр непоследовательных строк и диапазонов

Возможно, вы заинтересованы в наборе непоследовательных строк или в нескольких диапазонах. Давайте отобразим строки 5-7 и 10-13 из myfile.txt:

# sed -n -e '5,7p' -e '10,13p' myfile.txt

 

 

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

 

 

4. Замена слов или символов (базовая замена)

Чтобы заменить каждый экземпляр слова version на story в myfile.txt, выполните:

# sed 's/version/story/g' myfile.txt

 

 

Кроме того, вы можете рассмотреть возможность использования gi вместо g, чтобы игнорировать регистр символов:

# sed 's/version/story/gi' myfile.txt

 

 

Чтобы заменить несколько пробелов одним пробелом, мы будем использовать выходные данные ip route show и конвейера:

# ip route show | sed 's/ */ /g'

 

 

Сравните выходные данные ip route show с и без конвейера:

Replace-Words-Characters-in-File - 15 полезных советов для системного администрирования Linux

 

 

5. Замена слов или символов внутри диапазона

Если вы заинтересованы в замене слов только в диапазоне строк (например, от 30 до 40), вы можете сделать следующее:

# sed '30,40 s/version/story/g' myfile.txt

 

 

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

 

 

6. Использование регулярных выражений — I

Иногда файлы конфигурации загружаются с комментариями. Хотя это, безусловно, полезно, иногда может быть полезно отображать только директивы конфигурации, если вы хотите просмотреть их все с одного взгляда.

Чтобы удалить пустые строки или строки, начинающиеся с #, из файла конфигурации Apache, выполните:

# sed '/^#\|^$\| *#/d' httpd.conf

 

Знак каретки, за которым следует знак числа (^#), обозначает начало строки, тогда как ^$ обозначает пустые строки. Вертикальные столбцы указывают на логические операции, тогда как обратный слеш используется для выхода из вертикальных столбцов.

В этом конкретном случае в файле конфигурации Apache есть строки с #, не в начале некоторых строк, поэтому *# также используется для их удаления.

 

 

7. Использование регулярных выражений — II

Чтобы заменить слово, начинающееся с заглавных или строчных букв, другим словом, мы также можем использовать sed. Чтобы проиллюстрировать это, давайте заменим слово zip или Zip на rar в myfile.txt:

# sed 's/[Zz]ip/rar/g' myfile.txt

 

 

8. Просмотр строк, содержащих данный шаблон

Другое использование sed состоит в печати строк из файла, которые соответствуют заданному регулярному выражению. Например, нас может заинтересовать просмотр действий по авторизации и аутентификации, которые имели место 2 июля, согласно журналу /var/log/secure на сервере CentOS 7.

В этом случае шаблон для поиска — 2 июля в начале каждой строки:

# sed -n '/^Jul 1/ p' /var/log/secure

 

View-Logs-of-Particular-Date

 

 

9. Вставка пробелов в файлах

С помощью sed мы также можем вставлять пробелы (пустые строки) для каждой непустой строки в файле. Чтобы вставить одну пустую строку в каждую вторую строку в LICENSE, текстовом файле, выполните:

# sed G myfile.txt

 

 

Чтобы вставить две пустые строки, выполните:

# sed 'G;G' myfile.txt

 

 

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

 

Insert-Blank-Spaces-in-File - 15 полезных советов для системного администрирования Linux

 

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

 

 

10. Эмуляция dos2unix со встроенным редактированием

Программа dos2unix преобразует обычные текстовые файлы из форматирования Windows/Mac в Unix/Linux, удаляя скрытые символы новой строки, вставленные некоторыми текстовыми редакторами, используемыми на этих платформах. Если он не установлен в вашей системе Linux, вы можете имитировать его функциональность с помощью sed вместо его установки.

На изображении слева мы видим несколько символов новой строки DOS (^ M), которые позже были удалены с помощью:

# sed -i 's/\r//' myfile.txt

Covert-Text-Files-from-Windows-to-Linux

 

Обратите внимание, что опция -i указывает на редактирование на месте. Тогда изменения не будут возвращены на экран, но будут сохранены в файл.

Примечание: Вы можете вставить символы новой строки DOS при редактировании файла в редакторе vim с помощью Ctrl + V и Ctrl + M.

 

 

11. Редактирование на месте и резервное копирование исходного файла

В предыдущем совете мы использовали sed для изменения файла, но не сохранили исходный файл. Иногда на всякий случай рекомендуется сохранить резервную копию исходного файла.

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

В следующем примере мы заменим все экземпляры this или This (игнорируя регистр) на экземпляры в myfile.txt и мы сохраним исходный файл как myfile.txt.orig.

Секреты администрирования Linux

Наконец, мы будем использовать утилиту diff для определения различий между обоими файлами:

# sed -i'.orig' 's/this/that/gi' myfile.txt

 

Sed-Edit-and-Backup-Original-File - 15 полезных советов для системного администрирования Linux

 

 

12. Переключение пар слов

Предположим, у вас есть файл, содержащий полные имена в формате Имя, Фамилия. Чтобы правильно обработать файл, вы можете поменять фамилию и имя.

Мы можем сделать это с помощью sed довольно легко:

# sed 's/^\(.*\),\(.*\)$/\, /g' names.txt

 

Switch-Words-in-File

 

На изображении выше мы можем видеть, что скобки, являющиеся специальными символами, должны быть экранированы, как и числа 1 и 2.

Эти числа представляют выделенные регулярные выражения (которые должны появляться в скобках):

  • 1 представляет начало каждой строки до запятой.
  • 2 является заполнителем для всего, что находится справа от запятой до конца строки.

Желаемый вывод указывается в формате SecondColumn (Фамилия) + запятая + пробел + FirstColumn (Имя). Не стесняйтесь изменить его на то, что вы хотите.

Секреты администрирования Linux

 

13. Замена слов, только если найдено отдельное совпадение

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

Например, мы можем захотеть заменить start на stop только в том случае, если слово «services» находится в той же строке. В этом случае вот что произойдет:

We need to start partying at work,
but let’s remember to start all services first.

 

 

В первой строке start не будет заменен на stop, поскольку в этой строке не отображается слово services, в отличие от второй строки.

# sed '/services/ s/start/stop/g' msg.txt

 

Replace-Words-in-File - 15 полезных советов для системного администрирования Linux

 

 

14. Выполнение двух или более замен одновременно

Вы можете объединить две или более замен одной командой sed. Давайте заменим слова that и line в myfile.txt на This и verse соответственно.

Обратите внимание, как это можно сделать с помощью обычной команды подстановки sed, за которой следует точка с запятой и вторая команда подстановки:

# sed -i 's/that/this/gi;s/line/verse/gi' myfile.txt

 

 

Этот пример показан на следующем рисунке:

Replace-Each-Word-with-New-Word

 

 

15. Сочетание sed и других команд

Конечно, sed можно комбинировать с другими инструментами для создания более мощных команд. Например, давайте используем пример, приведенный в примере № 4, и извлекаем наш IP-адрес из выходных данных команды ip route.

Мы начнем с печати только строки, где находится слово src. Затем мы преобразуем несколько пробелов в один. Наконец, мы сократим 9-е поле (учитывая один пробел в качестве разделителя полей), где находится IP-адрес:

# ip route show | sed -n '/src/p' | sed -e 's/  */ /g' | cut -d' ' -f9

 

Секреты администрирования Linux

Изображение ниже иллюстрирует каждый шаг вышеуказанной команды:

 

Combine-sed-with-Other-Commands - 15 полезных советов для системного администрирования Linux

 

 

Вывод

В этом руководстве мы поделились 15 советами и рекомендациями по sed, которые помогут вам в повседневных задачах системного администрирования.

 

 

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

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

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

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасности,  полный курс по кибербезопасностикурсы DevNet (программируемые сети) от Академии 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, подайте заявку или получите бесплатную консультацию.
LinuxТекстовые редакторыТерминал Linux

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

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

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

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

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