Применяются следующие ограничения…
- Доступная версия sed не имеет опции
–i
(замена на месте). - Замена строки на месте предпочтительнее переименования файлов.
- Предпочтительна одна команда.
- Используется в сценарии BASH 5.0.0 (2), а не только в интерактивной команде.
Следующее были опробованы, но, похоже, не работают, потому что sed является инструментом «один проход». Я предполагаю, что дизайн «за один проход» - это то, почему sed не работает. Когда я читаю справочную страницу по использованию функции sub () в awk , кажется, что переменные среды ОС не заменяют строки.
Переменные среды…
PROP_FILE_PROP="Gleep00"
export PROP_FILE_PROP
echo "${PROP_FILE_PROP}"
PROP_FILE_PROP_NEW_VALUE="Gleep_Value_00 Gleep_Value_01 Gleep_Value_02"
export PROP_FILE_PROP_NEW_VALUE
echo "${PROP_FILE_PROP_NEW_VALUE}"
Подмножество полного файла
.
.
.
# attachmentFilesWhiteList = css js html exe text/plain application/vnd.xfdl
attachmentFilesWhiteList = css js html exe application/pdf text/calendar text/plain application/vnd.xfdl mov avi mp4 webm ogg image/png doc docx xls xlsx ppt pptx jpg jpeg application/octet-stream
.
.
.
Работает…
sed "s/^attachmentFilesWhiteList =\ .*/attachmentFilesWhiteList =\ ${PROP_FILE_PROP_NEW_VALUE}/"
Успешный результат
.
.
.
# attachmentFilesWhiteList = css js html exe text/plain application/vnd.xfdl
attachmentFilesWhiteList = Gleep_Value_00 Gleep_Value_01 Gleep_Value_02
.
.
.
Делает не работает…
sed "s/^${PROP_FILE_PROP} = .*/ ${PROP_FILE_PROP} = ${PROP_FILE_PROP_NEW_VALUE}/"
sed "s/^${PROP_FILE_PROP} = / ${PROP_FILE_PROP} = ${PROP_FILE_PROP_NEW_VALUE}/"
sed "s/^\"${PROP_FILE_PROP}\" = / \"${PROP_FILE_PROP}\" = \"${PROP_FILE_PROP_NEW_VALUE}\"/"
sed "s/^\"${PROP_FILE_PROP}\" = .*/ \"${PROP_FILE_PROP}\" = \"${PROP_FILE_PROP_NEW_VALUE}\"/"
sed "s/^\"${PROP_FILE_PROP}\" = .*/\n \"${PROP_FILE_PROP}\" = \"${PROP_FILE_PROP_NEW_VALUE}\"/"
sed "s/^\"${PROP_FILE_PROP}\" \= .*/\n \"${PROP_FILE_PROP}\" \= \"${PROP_FILE_PROP_NEW_VALUE}\"/"
Результат отказа
.
.
.
# attachmentFilesWhiteList = css js html exe text/plain application/vnd.xfdl
attachmentFilesWhiteList = css js html exe text/plain application/vnd.xfdl
.
.
.