С помощью ed
вы можете сделать следующее:
ed -s test.txt <<<$'/values/s/$/,ghf\nw' # add ghf to the end of line
и
ed -s values <<<$'/values/s/ert,//\nw' # remove ert
Быстрое решение без защиты от угловых случаев.
(Спасибо glenn jackman за sed
оптимизацию.)
sed -i "/^values = / s/$/, ${NEW_VALUE}/" test.txt
sed -i
-Внесите изменения в данный файл, не печатайте в stdout
.
/^values = /
-Когда sed
расположен на строке, которая начинается с values =
.
s/$/, ${NEW_VALUE}/
-Добавить , ${NEW_VALUE}
в конце строки.
test.txt
-Файл, над которым sed
будет выполнять действия.
sed -i "/^values = / s/ ${REMOVE_VALUE},\?//" test.txt
s/ ${REMOVE_VALUE},\?//
-Удалите первое вхождение ${REMOVE_VALUE}
вместе с необязательным последующим ,
.
,
сразу послеvalues =
,
. sed
разделитель для s
команды (, в моем примере это /
), команда не будет работать.