Table of Contents
Топ-20 самых полезных флагов sed#
| Флаг | Назначение |
|---|---|
-n |
Подавить автоматический вывод (используется с p) |
-i |
Редактировать файлы на месте |
-i.bak |
Редактировать файлы, создавая бэкап |
-e |
Передать несколько скриптов sed |
-E |
Включить расширенные регулярные выражения |
-r |
То же самое, что -E (старый стиль) |
-f script.sed |
Выполнить команды из файла |
-u |
Выводить результат построчно (стриминг) |
-s |
Обрабатывать файлы последовательно, а не параллельно |
--sandbox |
Безопасный режим, запрещает e и r |
s/// |
Замена текста |
p |
Печать строки |
d |
Удаление строки |
i |
Вставка строки |
a |
Добавление строки |
c |
Замена блока строк |
r |
Вставка содержимого из другого файла |
= |
Печать номера строки |
q |
Завершить обработку досрочно |
:label |
Метка для циклов и условий |
Уровень 1 — Базовые команды (разогрев)#
sed 's/foo/bar/' file.txt
- Заменяет первое вхождение
fooнаbarв каждой строке
sed 's/foo/bar/g' file.txt
- Заменяет все вхождения
fooнаbar
sed -n '5p' file.txt
- Печатает только 5-ю строку
sed -n '1,10p' file.txt
- Печатает строки с 1-й по 10-ю
sed '10d' file.txt
- Удаляет 10-ю строку
sed '5,15d' file.txt
- Удаляет строки с 5-й по 15-ю
sed '=' file.txt
- Печатает номера строк вместе с содержимым
Уровень 2 — Замена текста#
sed 's/error/ERROR/' file.txt
- Заменяет
errorнаERROR
sed 's/[0-9]/#/g' file.txt
- Заменяет все цифры на
#
sed 's/foo/bar/2' file.txt
- Заменяет второе вхождение
foo
sed 's/foo/bar/I' file.txt
- Замена
foo→barбез учёта регистра
sed 's:foo:bar:g' file.txt
- Использует
:вместо/как разделитель
sed -i 's/localhost/127.0.0.1/g' config.txt
- Редактирует файл на месте
sed -i.bak 's/old/new/g' file.txt
- Делает замену и создаёт резервную копию
Уровень 3 — Вставка и удаление строк#
sed '3i Hello' file.txt
- Вставить
Helloперед 3-й строкой
sed '3a World' file.txt
- Вставить
Worldпосле 3-й строки
sed '2r extra.txt' file.txt
- Вставить содержимое
extra.txtпосле 2-й строки
sed '5,10c NEW CONTENT' file.txt
- Заменить строки с 5-й по 10-ю на
NEW CONTENT
sed '/^$/d' file.txt
- Удалить пустые строки
sed '/^#/d' file.txt
- Удалить строки-комментарии
sed '/pattern/d' file.txt
- Удалить все строки, содержащие
pattern
Уровень 4 — Фильтрация по шаблонам#
sed -n '/error/p' file.txt
- Показать только строки с
error
sed -n '/error/!p' file.txt
- Показать строки, не содержащие
error
sed '/^[A-Z]/!d' file.txt
- Оставить только строки, начинающиеся с заглавной буквы
sed '/[0-9]$/!d' file.txt
- Оставить только строки, заканчивающиеся на цифру
sed '/foo.*bar/p' file.txt
- Найти строки, где есть
fooи после негоbar
sed -n '/^\s*$/!p' file.txt
- Убрать пустые строки и строки, состоящие только из пробелов
Уровень 5 — Группировка и подстановки#
sed -E 's/(foo)/[\1]/g' file.txt
- Оборачивает слово
fooв квадратные скобки
sed -E 's/(.*)foo(.*)/\2bar\1/' file.txt
- Меняет местами части строки
sed -E 's/([0-9]+)/[&]/g' file.txt
- Оборачивает найденные числа в
[]
sed -E 's/([A-Z]+)/\L\1/g' file.txt
- Переводит все заглавные буквы в нижний регистр
sed -E 's/([a-z]+)/\U\1/g' file.txt
- Переводит все строчные буквы в верхний регистр
sed -E 's/\bcat\b/dog/g' file.txt
- Заменяет слово
catнаdog, не затрагивая подстроки
sed -E 's/([0-9]{3})-([0-9]{2})/\2-\1/' file.txt
- Меняет порядок чисел по группам
Уровень 6 — Мощные комбинации#
find . -type f -name "*.txt" | xargs sed -i 's/foo/bar/g'
- Рекурсивно заменяет
foo→barво всех.txtфайлах
grep -rl "DEBUG" logs/ | xargs sed -i 's/DEBUG/INFO/g'
- Массовая замена
DEBUG→INFOтолько в найденных файлах
sed '10,20s/foo/bar/g' file.txt
- Замена
foo→barтолько в строках 10–20
cat file.txt | sed 's/[[:space:]]\+/ /g'
- Сжимает все пробелы и табы в один пробел
ps aux | sed 's/\s\+/,/g'
- Форматирует вывод процессов в CSV
ls | sed 's/^/Файл: /'
- Добавляет префикс
Файл:перед именем файла
dmesg | sed -n 's/.*error: \(.*\)/\1/p'
- Извлекает текст ошибок из системного лога
sed 's/\t/,/g' data.tsv
- Заменяет табуляцию на запятые (TSV → CSV)
sed '/^#/d;/^$/d' config.conf
- Удаляет комментарии и пустые строки
awk '{print $1}' access.log | sed 's/^/IP: /'
- Добавляет префикс
IP:ко всем IP-адресам
sed ':a;N;$!ba;s/\n/, /g' file.txt
- Объединяет все строки файла в одну через запятую
sed '/ERROR\|WARNING/d' app.log
- Удаляет строки с
ERRORилиWARNING
grep -rl "version: 1.0" . | xargs sed -i 's/version: 1.0/version: 2.0/g'
- Массовое обновление версий
Уровень 7 — Гуру-режим#
sed '1!G;h;$!d' file.txt
- Переворачивает строки в файле (реверс)
sed 's/.*\///' file.txt
- Оставляет только имена файлов из путей
sed 's/\(.*\)/[\1]/' file.txt
- Оборачивает каждую строку в квадратные скобки
sed '1,3!d' file.txt
- Оставляет только первые 3 строки
sed '4,$d' file.txt
- Удаляет всё, начиная с 4-й строки
sed -E ':a;N;$!ba;s/\n/, /g' file.txt
- Соединяет все строки файла в одну через запятую
sed '/^$/d;/^#/d' file.txt
- Удаляет пустые строки и комментарии
sed -n '/ERROR/{n;p}' file.txt
- Показывает строки после строк с
ERROR
sed -n '/foo/{=;p}' file.txt
- Печатает номер и содержимое строки с
foo
Бонус: мультифайловая массовая замена#
find . -type f -name “*.conf” -exec sed -i ’s/DEBUG/INFO/g’ {} ;
🔹 Найдёт все .conf файлы и заменит DEBUG на INFO.