2017-02-20 18 views
0

Я пытаюсь прочитать файл и изменить переменную в файле с помощью sed, но sed не считывает значение переменной.Чтение переменной в sed из forloop

Здесь я хочу заменить @@ на market и ввод вывод в другой файл

markets=au,uk,ca 

IFS="," read -ra items <<<"$markets" 

for item in "${items[@]}" 
do 
    echo "country is :: $item" 
    sed -i 's/@@/${!item}/g' sample_guid >> /test/eric/Guid_del 
done 
+0

Что вы хотите использовать @ @ '? – Inian

+1

было бы полезно увидеть пример ввода до/после ... с использованием '-i' означает, что не будет никакого stdout ... для замены переменных, необходимо [использовать двойные кавычки] (https://stackoverflow.com/documentation/sed/1096/substitution/3519/substitution-using-shell-variables # t = 201702201333106274056) – Sundeep

+0

Если у вас есть файл шаблона sample_guid с '@@', который будет заменен рынками для разных прогонов, попробуйте удалить опцию '-i' sed. –

ответ

0

Когда sample_guid выглядит Это пример для рынка @@. Я хочу, чтобы рынок заполнился здесь.
Если вы хотите сделать это для различных рынков, использовать особенность Printf петлю через дополнительные параметры:

printf "This is an example for market %s. I want the market filled in here.\n" au uk ca 

Когда sample_guid действительно JAS только один @@, вы можете расширить printf решение

printf "$(sed 's/@@/%s/' sample_guid)\n" $(tr "," " " <<< "${markets}")