sed — мой любимый инструмент для редактирования текстов прямо в терминале Linux. В нём нет привычных окошек: этот "тихий" редактор мгновенно преобразует нужные вам фрагменты без возни с мышкой. От простых замен до хитрых манипуляций — собираю 9 приёмов, которые однажды круто облегчили мне работу с файлами.
1 Молниеносный поиск и замена: как сделать это точечно или сразу везде
Замены с помощью sed — мой ежедневный ритуал, особенно когда нужно быстро обработать большой файл и даже не хочется открывать редактор. sed работает прямо из терминала и гибче привычной функции "Найти и заменить".
Всё очень просто:
Команда s — это "заменить": указываете, что ищете (например, Flameshot), на что хотите заменить (например, Gradia) — и всё готово.
По умолчанию sed меняет только первое найденное слово в строке. Нужно заменить все сразу? Просто добавьте флаг g:
Теперь изменятся все совпадения на каждой строке.
Хотите воздействовать лишь на определённую строку? Укажите её номер перед s:
Этот способ затронет только 10-ю строку. А чтобы заменить текст на отрезке строк, пропишите диапазон через запятую:
Иногда требуется корректировать только строки, в которых встречается определённый шаблон. В этом случае помогает фильтрация по паттерну:
Так sed заменит текст только в тех строках, где встречается, например, ERROR. Всё остальное останется без изменений.
2 Вставляйте, добавляйте, удаляйте строки в один миг
Чаще всего мне нужно что‑то вставить, добавить или удалить. sed делает это без лишних движений и не требует лезть в редактор.
Вставить строку можно где угодно — до или после нужной позиции. Например, чтобы добавить правило перед 3-й строкой, используйте флаг i:
Хотите добавить строку после 10-й? Просто замените i на a.
Просто запомните: i — вставить перед строкой, a — добавить после неё.
А чтобы заменить целую строку разом, используйте c. Например, чтобы обновить версию в конфигурационном файле, понадобиться всего одна команда:
Ваша новая строка заменит старую прямо на месте.
Чтобы просто удалить строку, воспользуйтесь d:
Например, так исчезнет 3-я строка. Надо убрать целый блок? Укажите диапазон:
Строки с пятой по десятую будут удалены одним махом.
Если нужно стереть все строки, содержащие, скажем, DEBUG — достаточно одной команды:
Поначалу команды кажутся пугающими, но после пары попыток набираются почти на автомате.
3 Выводим и извлекаем только нужное
По умолчанию sed показывает результат работы построчно — при больших логах это ни к чему. Если хотите выводить только определённые строки, добавьте -n и команду p — всё под контролем.
Вот как вывести только 5-ю строку:
Или весь диапазон — с 15-й по 20-ю строки:
Хотите вывести только строки с ERROR? Вот так:
Похоже на grep, но всё происходит в рамках sed — удобно, когда нужно склеить несколько этапов обработки.
Молниеносный трюк: вытянуть кусок файла между словами START и END:
sed покажет всё между ними — нужный блок в вашем распоряжении.
Хотите получить всё, кроме определённых строк? Просто добавьте ! перед командой:
Получите только "чистый" вывод, без того, что мешает.
4 Моментальное редактирование файлов с подстраховкой
Обычно sed только отображает результат — "оригинал" не тронут. Но если нужен реальный апдейт, используйте -i, и изменения сразу запишутся в файл:
Теперь все вхождения поменяются прямо внутри файла. Важно: отменить это уже не выйдет.
Боитесь потерять данные? Передавайте -i с суффиксом — sed сделает резервную копию:
Так у вас сохранится file.txt.bak до изменений. Можете задавать свой суффикс — хоть дату:
Полезно, если часто экспериментируете с конфигами — всегда есть к чему вернуться.
5 Много правок сразу: пакетная обработка sed
Иногда править нужно не одну, а сразу несколько вещей: переименовать, удалить, что‑то исправить. Конечно, можно прогнать sed несколько раз, но куда удобнее — всё за один проход.
Например, сразу две замены:
Здесь apple станет orange, а pear — grape. Команды можно соединять через точку с запятой:
Здесь меняются цвета, фрукты, и стираются строки, где есть "draft". Если доводится делать много правок — есть смысл вынести команды в отдельный sed-скрипт.
6 Автоматизация через скрипты: обработка сотен файлов одним махом
Если приходится часто исправлять типичные ошибки или убирать лишние символы — удобно складывать команды в отдельный файл edits.sed:
Потом применяете их ко всем нужным файлам одной командой:
sed обработает всё за раз — как мини-программа. Сложите все свои правила в один файл — потом это очень выручит.
7 Редактирование по шаблонам: магия регулярных выражений в sed
Регулярные выражения — штука, с которой ловите не только слова, а любые шаблоны: всё, что угодно — от цифр после имени до символов в конце строки. Сначала может показаться сложным, но освоившись, начинаете "лепить" текст, как угодно.
regex помогает находить и массово исправлять повторы и типовые ошибки во всём файле. Запомните базовые символы — и ваши возможности возрастут в разы!
Например, так можно поменять местами имя и фамилию в каждой строке:
Было так:
А станет наоборот:
Можно быстро привести данные к единому виду: добавить ноль к однозначным числам, убрать пробелы на концах — любые массовые правки за секунды:
8 Мгновенная очистка и быстрая правка текстовых файлов
Часто файлы приходят из Windows, Excel и прочих систем — набиты лишними символами, пробелами и замучены переводами строк (к infamous ^M, то есть \r).
Чтобы убрать все возвраты каретки, достаточно:
Много табуляций? Замените всё на пробелы:
Нужно убрать пустые строки, пробелы в конце, сократить двойные пробелы? sed легко осилит даже глубокую "уборку" за пару ходов:
Первая команда удаляет пустые строки, вторая — обрезает пробелы в конце, третья — приводит разрывы между словами к норме.
9 sed + Bash: связка для продвинутых пользователей
sed отлично дружит со всеми командами Bash. С его помощью можно отфильтровать вывод, вычленить главное, сравнить изменённые файлы или обработать сотню документов за один приём.
Например, если стандартный ps aux слишком многословен — покажите только первые 5 строк:
Парой grep и sed можно, к примеру, вытянуть только метки времени из лога ошибок:
И это лишь верхушка айсберга. sed, в связке с find, xargs, diff превращается в универсальный комбайн для автоматической обработки текстов любой сложности — надёжно доводя ваши скрипты до идеального результата.
От банальных замен до сложных манипуляций с регулярками — sed реально экономит мне часы каждую неделю. Так что не стесняйтесь — пробуйте, тренируйтесь и делайте sed своим главным инструментом!
Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!
Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь
Также подписывайтесь на нас в:
- Telegram: https://t.me/gergenshin
- Youtube: https://www.youtube.com/@gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru