Толик Панков
hex_laden
............ .................. ................
October 2025
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Толик Панков [userpic]
Использование переменных из bash-скрипта в sed

Преамбула


Вроде невелика проблема, а вопросы вызывает. Понятно, что вот так работать не будет:

VAR1="Nado naiti"
VAR2="Nado zamenit'"

sed 's/$VAR1/$VAR2'


т.к. одинарные кавычки в команде sed все закэранируют, и sed будет искать черти что и с боку бантик.

Решение


1. Поменять одинарные кавычки на двойные.
2. Поменять sed'овский разделитель слэш (/) на что-нибудь другое, например на знак % (Уникальность программы sed в том, что она позволяет использовать любой разделитель, например знак подчеркивания)

VAR1="Nado naiti"
VAR2="Nado zamenit'"

sed "s%$VAR1%$VAR2"


Примеры


Добавление строки в начало файла из предыдущей заметки. Строка содержится в переменной $FIRSTSTRING:

sed -i -e "1 s%^%$FIRSTSTRING\n%" file.txt

Замена строки, начинающейся с любого количества пробелов и/или со строки из переменной $START на строку, содержащуюся в переменной $REPLACE:

sed -i "s%^ *$START.*%$REPLACE%" file.txt

Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2019/08/15/ispolzovanie-peremennyh-iz-bash-skripta-v-sed/

Tags: ,