Skip to content

Daniilak

Личный блог

  • Главная
  • Кейсы
  • Чат-боты
  • Статьи
  • Арт
  • Скриншоты
  • Анимация

Привет! Я программист, живу в Казани, люблю смотреть Железного человека и ....*перечисление*. (а еще люблю Пикачу)

Linux. Команда sed

Posted on 01.10.2021 by Даниил Агниашвили

Команда 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

  • https://tldr.ostera.io/sed
  • http://najomi.org/_nix/sed
Posted in Статьи

Навигация по записям

← Крутость программиста
О шрифтах →

Автор: Даниил Агниашвили

Разработчик. Немного стартапер

Рубрики

Арт Кейсы Статьи Чат-боты

Резюме

  • Открыть на HH.ru
Все права защищены @daniilak | Дизайн ThemesDNA.com