Вставить несколько строк, содержащих переменную 'и $, с помощью sed не работает - PullRequest
2 голосов
/ 12 марта 2020

Я новичок в написании сценариев и застрял в одном месте, которое может быть очень простым ... все равно буду благодарен, если кто-нибудь сможет помочь.

Ниже моя проблема в самом простом выражении:

Входной файл new.txt

Привет команда

Ожидается выходной файл: new_2.txt

  Select '/backup/path1_' from dual;
  Select '/backup/path2_' from dual;  
    Hello team 

Примечание: $ var1 = path1 и $ var2 = путь2

Sed command used : 
Sed '1i\
Select '/backup/"$var1"_' from dual;\
Select '/backup/"$var2"_' from dual;\
' new.txt > new_2.txt

Вывод получен:

new_2.txt 
Select /backup/path1_ from dual;
Select /backup/path2_from dual;

Hello team 

После комбинации различных кавычек не будет отображаться ни одна кавычка ' в выходные данные или значение не будет вставлено.

Ответы [ 2 ]

3 голосов
/ 12 марта 2020

Не могли бы вы попробовать следующее:

var1=path1
var2=path2
sed "1i\\
Select '/backup/${var1}_' from dual;\\
Select '/backup/${var2}_' from dual;
" new.txt > new_2.txt

Результат:

Select '/backup/path1_' from dual;
Select '/backup/path2_' from dual;
Hello team
0 голосов
/ 12 марта 2020

Вы также можете экранировать кавычки с помощью обратной косой черты sh:

sed '1i\
Select '\'/backup/"$var1"_\'' from dual;\
Select '\'/backup/"$var2"_\'' from dual;
' new.txt > new_2.txt
...