Команда s - substitution (замена)
Sed использует в качестве разделитея первый символ после s (кроме обратного слеша \ и символа новой строки):
Обратный слеш перед разграничительным символом, отменяет его спецзначение.
По умолчанию команда s заменяет только первое совпадение, чтобы заменить все найденные совпадения используется модификатор /g
Опция -n отменяет вывод на стандартный выход.
Модификатор /p - Если замена имела место, то вывести результат.
Вывести только те строки, где произошла замена.
Использование символа & когда искомый ОБРАЗЕЦ неизвестен
Символ & (амперсанд), будучи помещен в состав ЗАМЕНЫ, означает любой найденный в тексте ОБРАЗЕЦ.
"& " - Заменяется на строку, указанную в регулярном выражении.
Например:
Числовой модификатор
Это число от 1 до 512, которое ставится после последнего разделителя и указывает, какое по счету совпадение подлежит замене.
Можно комбинировать цифровой модификатор с модификатором /g. Если нужно оставить неизменным первое слово, а второе и последующие заменить на слово "(удалено)", то команда будет такая:
Модификатор d
Удаляет строки по регулярному выражению
Команда ! (отрицание)
Символ восклицательного знака (!) инвертирует выбор
Замена "foo" на "bar" ИСКЛЮЧАЯ строки содержащие "baz":
sed s/ОБРАЗЕЦ/ЗАМЕНА/
Sed использует в качестве разделитея первый символ после s (кроме обратного слеша \ и символа новой строки):
sed -i "s/строка/новая строка/g" file тоже самое sed -i "s#строка#новая строка#g" file-i заставляет sed делать замену в исходном файле без вывода на экран.
Обратный слеш перед разграничительным символом, отменяет его спецзначение.
\xabc\xdefxвыведет abcxdef
По умолчанию команда s заменяет только первое совпадение, чтобы заменить все найденные совпадения используется модификатор /g
$ echo кот этот, был самый обычный кот | sed 's/кот/котенок/g' котенок этот, был самый обычный котенок
Опция -n отменяет вывод на стандартный выход.
Модификатор /p - Если замена имела место, то вывести результат.
Вывести только те строки, где произошла замена.
sed -n 's/gnome/penguin/p' file
Использование символа & когда искомый ОБРАЗЕЦ неизвестен
Символ & (амперсанд), будучи помещен в состав ЗАМЕНЫ, означает любой найденный в тексте ОБРАЗЕЦ.
"& " - Заменяется на строку, указанную в регулярном выражении.
Например:
$ echo 1234 | sed 's/[0-9]*/(&)/' (1234)
Числовой модификатор
Это число от 1 до 512, которое ставится после последнего разделителя и указывает, какое по счету совпадение подлежит замене.
$ echo очень глупый пингвин | sed 's/[а-я]*/хороший/2' очень хороший пингвин
Можно комбинировать цифровой модификатор с модификатором /g. Если нужно оставить неизменным первое слово, а второе и последующие заменить на слово "(удалено)", то команда будет такая:
$ echo очень глупый пингвин | sed 's/[а-я]*/(удалено)/2g' очень (удалено) (удалено)
Модификатор d
Удаляет строки по регулярному выражению
sed '/pattern/d'
Команда ! (отрицание)
Символ восклицательного знака (!) инвертирует выбор
Замена "foo" на "bar" ИСКЛЮЧАЯ строки содержащие "baz":
sed '/baz/!s/foo/bar/g'Удалим все строки кроме второй.
$ sed '2 !d' text.txtЗамена "foo" на "bar" ТОЛЬКО для строк содержащих "baz": Заменить все совпадения в файле twpol.txt с аргументами из файла grlog4 на префикс # плюс аргумент
cat grlog4 | while read i; do sed -i -e "s&$i&#$i&g" twpol.txt;done