Я пытаюсь кота файл, чтобы создать копию себя, но в то же время заменить некоторые значенияПочему эта команда sed ничего не делает?
моя команда:
cat ${FILE} | sed "s|${key}|${value}|g" > ${TEMP_FILE}
Однако, когда я открываю временный файл, ни один из ключи были заменены - просто прямой обмен. Я повторил значения ключа и значения, и они верны - они исходят из элемента массива.
Но если я использую обычную строку не переменную, она отлично работает для одного типа ключа - то есть:
cat ${FILE} | sed "s|example_key|${value}|g" > ${TEMP_FILE}
Экземпляры example_key внутри файла заменяются что то, что я хочу.
Однако, когда я пытаюсь использовать параметр массива $ key, он ничего не делает. Не знаю, почему :-(
использованияКоманда:
declare -a props
...
....
for x in "${props[@]}"
do
key=`echo "${x}" | cut -d '=' -f 1`
value=`echo "${x}" | cut -d '=' -f 2`
# global replace on the $FILE
cat ${FILE} | sed "s|${key}|${value}|g" > ${TEMP_FILE}
#cat ${FILE} | sed "s|example_key|${value}|g" > ${TEMP_FILE}
done
элементы массива хранятся в следующем формате: $ ключ = значение $
Можете ли вы попробовать: 'sed 's ~ $ {key} ~ $ {value} ~ g" "$ {FILE}"> "$ {TEMP_FILE}" ' – anubhava
Можете ли вы написать [ (http://sscce.org/), который демонстрирует проблему? –
Как выглядит ваш _array_? – devnull