SED
Удалить строчку по шаблону
sed '/шаблон/d' filename
Заменить в строке ТЕКСТ1 на ТЕКСТ2. По умолчанию команда sed заменяет первое вхождение шаблона в каждой строке, не затрагивая второе, третье и т.д.(если в строке будет несколько текст1, то заменится только первый)
sed 's/текст1/текст2/' filename
Замена n-ого вхождения шаблона в строке. Вхождения, которые нужно заменить, обозначаются с помощью флагов /1, /2 и т.д.
sed 's/текст1/текст2/2' filename
Для замены всех без исключения вхождений заданного шаблона используется глобальный флаг /g
sed 's/текст1/текст2/g' filename
Замена всех вхождений шаблона в строке начиная с n-ого. Для этого номер вхождения, с которого нужно начать, сопровождается флагом g. Следующая команда заменит в каждой строке третье, четвёртое и т.д. вхождение
sed 's/текст1/текст2/3g' filename
Заключение первых символов слов в скобки
echo "Welcome To The Moscow" | sed 's/\(\b[A-Z]\)/\(\1\)/g' (W)elcome (T)o (T)he (M)oscow
Замена шаблона в конкретной строке. В данном случае заменяет заданное слово только в третьей строке
sed '3 s/текст1/текст2/' filename
Дублирование изменяемых строк. При добавлении флага /p команда выведет в терминал строки, где производится замена. Строки, в которых искомый шаблон отсутствует, не дублируются
sed 's/текст1/текст2/p' filename
Вывод только строк с заменой. Если рядом с флагом /p добавить ключ -n, в терминале отобразятся только строки, где выполнялась замена. В данном случае -n отключает дублирующее поведение флага /p, поэтому строки с заменой выводятся по одному разу
sed -n 's/текст1/текст2/p' filename
Замена шаблона в указанном диапазоне строк. Можно указывать диапазон строк, в которых требуется заменить определённый шаблон. Здесь производится замена в строках с 1 по 3
sed '1,3 s/текст1/текст2/' filename
Здесь $ указывает на последнюю строку файла, в связи с чем заменяются первые вхождения шаблона, начиная со второй и заканчивая ей
sed '2,$ s/текст1/текст2/' filename
Удаление строк из файла
Удаление n-ой строки. В данном случае пятой
sed '5d' filename
Удаление последней строки
sed '$d' filename
Удаление строк с x по y. В данном случае с третьей по шестую
sed '3,6d' filename
Удаление строк с n-ой до последней
sed '12,$d' filename
Удаление текста, соответствующего шаблону
sed '/abc/d' filename
Добавление/удаление пустых строк в файле
Вставить после каждой текстовой строки одну пустую
sed G filename
Вставить две пустые строки
sed 'G;G' filename
Удалить все пустые строки и вставить по одной после каждой текстовой
sed '/^$/d;G' filename
Вставить пустую строку над каждой, содержащей word
sed '/word/{x;p;x;}' filename
Вставить пустую строку после каждой, содержащей word
sed '/word/G' filename
Вставить 5 пробелов слева от каждой строки
sed 's/^/ /' filename
Нумерация строк
Пронумеровать каждую строку файла (с левым выравниванием). Символ = используется для нумерации строки, а флаг \t для табулирования между номером и предложением
sed = filename | sed 'N;s/\n/\t/'
Требуется поставить символ # перед всеми ttyv, кроме ttyv0
sed 's/^ttyv[1-8]/#&/' /etc/ttys ttyv0 "/usr/libexec/getty Pc" #ttyv1 "/usr/libexec/getty Pc" #ttyv8 "/usr/libexec/getty Pc"
Отслеживаем логи через tail -f. Для удобства отображения хотелось бы после каждой строки добавлять пустую строку.
Надо в конце строки вставлять символ перевода строки \n. Якорем(метасимволом, квантификатором), обозначающим конец строки, в большинстве диалектов регулярных выражений обычно служит символ $:
tail -f access.log | sed 's//$/\n/'