Linux. Команда sed

Команда sed - это потоковый редактор текста. Вставляет/изменяет/добавляет текст не открывая файл визуально. Обычно используется в скриптах.

Online песочница sed

Пара важных параметров:

  • -r расширенная поддержка синтаксиса регулярных выражений
  • -i редактирование "на месте"

Общие примеры

Замените первое вхождение регулярного выражения в каждой строке файла:

sed 's/{{regex}}/{{replace}}/' {{filename}}

Замените все вхождения расширенного регулярного выражения в файле:

sed -r 's/{{regex}}/{{replace}}/g' {{filename}}

Замените все вхождения строки в файле, перезаписав файл (т.е. на месте):

sed -i 's/{{find}}/{{replace}}/g' {{filename}}

Заменить только строки, соответствующие шаблону line_pattern:

sed '/{{line_pattern}}/s/{{find}}/{{replace}}/' {{filename}}

Про разделители и подстановку

sed умеет понимать любой разделитель, например ~ или _. Рассмотрим пример замены слешей.

echo 'C:\foo\bar.json' | sed 's/\\/\//g'
# C:/foo/bar.json

's/\\/\//g' <- не очень, правда? А если так 's;\\;\/;g'

echo 'C:\foo\bar.json' | sed 's_\\_\/_g'
# C:/foo/bar.json

Примеры из проекта

Добавить строчку "my-services", на 123 строку файла info.json

sed -i '123a "my-services",' /usr/share/nginx/html/brand/info.json

Заменить __I18N_HASH__ на значение переменной окружения CI_COMMIT_REF_NAME в файле environment.prod.ts

sed -i "s|__I18N_HASH__|${CI_COMMIT_SHA}|"  src/environments/environment.prod.ts

Похожие записи

Перенести базы PostgreSQL на другой диск Windows

Если у вас установлен Postgres в конфигурации по умолчанию, то его базы хранятся в Program Files. Если есть необходимость освободить место на системном диске C, то можно перенести базы данных Postgres на другой диск.

Ubuntu 18.04 Punto Switcher

Нормальной замены на Ubuntu нет, есть gxneur, но он кривой(( Пытался пользоваться несколько месяцев. В итоге удалил.

24 декабря 2018 г. в Linux

Lets Encrypt Wildcard SSL вручную

Определение wildcard SSL. Краткий список шагов ручного получения бесплатного wildcard SSL-сертификат от Lets Encrypt на примере CentOS 7 и утилиты acme.sh