Использование sed для обработки текста в Bash

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

bashsedрегулярные выражения

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

📝 Пример кода:

#!/bin/bash

# Пример: заменяем все вхождения слова "error" на "warning" в файле логов
sed -i 's/error/warning/g' /var/log/myapp.log

# Пример: удаляем все пустые строки в файле
sed -i '/^$/d' /var/log/myapp.log

# Пример: извлекаем все строки, содержащие "error", и сохраняем в новый файл
sed -n '/error/p' /var/log/myapp.log > errors.log

📌 Как это работает:

  • sed -i 's/error/warning/g': Заменяет все вхождения слова «error» на «warning» в файле /var/log/myapp.log. Флаг -i используется для изменения файла на месте.
  • sed -i '/^$/d': Удаляет все пустые строки в файле.
  • sed -n '/error/p': Извлекает все строки, содержащие «error», и записывает их в новый файл errors.log. Опция -n подавляет вывод всех строк, а p выводит только те, что подходят под паттерн.

❗️ Не забудьте всегда проверять результат на тестовом файле, чтобы избежать потери данных. Если используете флаг -i, изменения будут сделаны непосредственно в файле.

tags: #bash #linux #полезно

❤️ @recura_tech

Скриншот терминала с примерами команд sed для замены и фильтрации строк в логах; внизу виден логотип RECURA.
Скриншот терминала с примерами sed из поста.

Читайте так же