SED — различия между версиями
Root (обсуждение | вклад) |
Root (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
Удалить строчку по шаблону | Удалить строчку по шаблону | ||
− | sed '/шаблон/d' filename | + | sed '/<font color=blue>шаблон</font>/d' filename |
Заменить в строке ТЕКСТ1 на ТЕКСТ2 | Заменить в строке ТЕКСТ1 на ТЕКСТ2 | ||
− | sed 's/текст1/текст2/' filename | + | sed 's/<font color=blue>текст1</font>/<font color=red>текст2</font>/' filename |
+ | Замена n-ого вхождения шаблона в строке. Вхождения, которые нужно заменить, обозначаются с помощью флагов /1, /2 и т.д. К примеру, следующая команда заменит в каждой строке второе вхождение: | ||
+ | sed 's/<font color=blue>текст1</font>/<font color=red>текст2</font>/2' filename | ||
Заменить все встречающиеся совпадения | Заменить все встречающиеся совпадения |
Версия 22:17, 31 мая 2022
Удалить строчку по шаблону
sed '/шаблон/d' filename
Заменить в строке ТЕКСТ1 на ТЕКСТ2
sed 's/текст1/текст2/' filename
Замена n-ого вхождения шаблона в строке. Вхождения, которые нужно заменить, обозначаются с помощью флагов /1, /2 и т.д. К примеру, следующая команда заменит в каждой строке второе вхождение:
sed 's/текст1/текст2/2' filename
Заменить все встречающиеся совпадения
sed 's/pattern/replacement/g' filename
В файле есть строчки:
ttyv0 "/usr/libexec/getty Pc"
ttyv1 "/usr/libexec/getty Pc"
...
ttyv8 "/usr/libexec/getty Pc"
Требуется поставить символ # перед всеми ttyv, кроме ttyv0:
sed 's/^ttyv[1-8]/#&/' /etc/ttys
Отслеживаем логи через tail -f. Для удобства отображения хотелось бы после каждой строки добавлять пустую строку.
Надо в конце строки вставлять символ перевода строки \n. Якорем(метасимволом, квантификатором), обозначающим конец строки, в большинстве диалектов регулярных выражений обычно служит символ $:
tail -f access.log | sed 's/$/\n/'
Вывести определённую строку, в данном случае третью:
sed -n 3p