Назад | Перейти на главную страницу

Как использовать переменную в sedscript

Я устанавливаю переменную в сценарии оболочки, затем вызываю сценарий sed, а в сценарии sed я использую переменную, которая, похоже, не работает, и мне нужна была помощь в том, как этого добиться.

  1. Следующие работы в командной строке

sed -e "s / text / $ VAR" тестовый файл

  1. Следующее не работает

test.sh

экспорт VAR = somevar
sed -f sedfile testfile

тестовый файл

Это тестовый файл

файл sed

s / text / $ VAR /

Также пробовал

s / text / $ {VAR} /

Результат

Это файл $ VAR

Ожидаемый результат

Это файл somevar

Мягкие цитаты " в версии командной строки вашего примера разрешить расширение оболочки переменной твоей оболочкой, прежде чем sed выполнит инструкции sed.

Файл sedfile не является сценарием оболочки, это сценарий sed, интерпретируемый sed, поэтому расширение переменной оболочки не может происходить. Это просто не сработает, AFAIK.

вы можете создать файл sed, используя здесь синтаксис документа

cat <<foobar > sedfile
s/text1/${VAR1}/
s/text2/${ANOTHERVAR}/
foobar
  • foobar необходимо использовать в начале строки
  • foobar может быть любой строкой, просто используйте ту же строку в <<foobar

затем сделай посев

sed -f sedfile testfile

Я ожидаю, что ваш файл sed немного сложен, для одной или двух замен, возможно, не стоит его использовать.