Добавить в сценарий оболочки [закрыто]

-1
08.05.2018, 22:48
2 ответа

С помощью 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
0
28.01.2020, 05:10

Быстрое решение без защиты от угловых случаев.
(Спасибо 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}вместе с необязательным последующим ,.

Проблемы с этим решением

  1. Добавление первого значения добавит ,сразу послеvalues =
  2. Удаление последнего значения оставит строку, заканчивающуюся на ,.
  3. Если добавленные/удаленные переменные содержат sedразделитель для sкоманды (, в моем примере это /), команда не будет работать.
1
28.01.2020, 05:10

Теги

Похожие вопросы