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 на другой диск.

Про популярные linux'ы

Кратко про самые популярные дистрибутивы, используемые для размещения сайтов: Ubuntu, Debian, CentOS, RHEL, Gentoo, Fedora, SuSE

28 февраля 2020 г. в Linux