Найти в Дзене
Герман Геншин

9 невероятных трюков с sed для Linux — меняйте текст за секунду (ваш терминал никогда не будет прежним!)

sed — мой любимый инструмент для редактирования текстов прямо в терминале Linux. В нём нет привычных окошек: этот "тихий" редактор мгновенно преобразует нужные вам фрагменты без возни с мышкой. От простых замен до хитрых манипуляций — собираю 9 приёмов, которые однажды круто облегчили мне работу с файлами. Замены с помощью sed — мой ежедневный ритуал, особенно когда нужно быстро обработать большой файл и даже не хочется открывать редактор. sed работает прямо из терминала и гибче привычной функции "Найти и заменить". Всё очень просто: Команда s — это "заменить": указываете, что ищете (например, Flameshot), на что хотите заменить (например, Gradia) — и всё готово. По умолчанию sed меняет только первое найденное слово в строке. Нужно заменить все сразу? Просто добавьте флаг g: Теперь изменятся все совпадения на каждой строке. Хотите воздействовать лишь на определённую строку? Укажите её номер перед s: Этот способ затронет только 10-ю строку. А чтобы заменить текст на отрезке строк, пропи
Оглавление

sed — мой любимый инструмент для редактирования текстов прямо в терминале Linux. В нём нет привычных окошек: этот "тихий" редактор мгновенно преобразует нужные вам фрагменты без возни с мышкой. От простых замен до хитрых манипуляций — собираю 9 приёмов, которые однажды круто облегчили мне работу с файлами.

1 Молниеносный поиск и замена: как сделать это точечно или сразу везде

Замены с помощью sed — мой ежедневный ритуал, особенно когда нужно быстро обработать большой файл и даже не хочется открывать редактор. sed работает прямо из терминала и гибче привычной функции "Найти и заменить".

Всё очень просто:

-2

Команда s — это "заменить": указываете, что ищете (например, Flameshot), на что хотите заменить (например, Gradia) — и всё готово.

По умолчанию sed меняет только первое найденное слово в строке. Нужно заменить все сразу? Просто добавьте флаг g:

Теперь изменятся все совпадения на каждой строке.

Хотите воздействовать лишь на определённую строку? Укажите её номер перед s:

Этот способ затронет только 10-ю строку. А чтобы заменить текст на отрезке строк, пропишите диапазон через запятую:

Иногда требуется корректировать только строки, в которых встречается определённый шаблон. В этом случае помогает фильтрация по паттерну:

-3

Так sed заменит текст только в тех строках, где встречается, например, ERROR. Всё остальное останется без изменений.

2 Вставляйте, добавляйте, удаляйте строки в один миг

Чаще всего мне нужно что‑то вставить, добавить или удалить. sed делает это без лишних движений и не требует лезть в редактор.

Вставить строку можно где угодно — до или после нужной позиции. Например, чтобы добавить правило перед 3-й строкой, используйте флаг i:

-4

Хотите добавить строку после 10-й? Просто замените i на a.

Просто запомните: i — вставить перед строкой, a — добавить после неё.

А чтобы заменить целую строку разом, используйте c. Например, чтобы обновить версию в конфигурационном файле, понадобиться всего одна команда:

Ваша новая строка заменит старую прямо на месте.

-5

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

Например, так исчезнет 3-я строка. Надо убрать целый блок? Укажите диапазон:

Строки с пятой по десятую будут удалены одним махом.

Если нужно стереть все строки, содержащие, скажем, DEBUG — достаточно одной команды:

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

3 Выводим и извлекаем только нужное

По умолчанию sed показывает результат работы построчно — при больших логах это ни к чему. Если хотите выводить только определённые строки, добавьте -n и команду p — всё под контролем.

Вот как вывести только 5-ю строку:

-6

Или весь диапазон — с 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 строк:

-7

Парой grep и sed можно, к примеру, вытянуть только метки времени из лога ошибок:

И это лишь верхушка айсберга. sed, в связке с find, xargs, diff превращается в универсальный комбайн для автоматической обработки текстов любой сложности — надёжно доводя ваши скрипты до идеального результата.

От банальных замен до сложных манипуляций с регулярками — sed реально экономит мне часы каждую неделю. Так что не стесняйтесь — пробуйте, тренируйтесь и делайте sed своим главным инструментом!

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь

Также подписывайтесь на нас в: