Использование sed для обновления свойства в файле свойств Java - PullRequest
11 голосов
/ 21 февраля 2012

Я бы хотел, чтобы простой однострочник с sed обновил значение свойства java. Не зная, какова текущая настройка свойства java, и оно может быть пустым)

до

example.java.property=previoussetting

после

example.java.property=desiredsetting

Ответы [ 2 ]

16 голосов
/ 14 апреля 2016

Это обновит ваш файл:

sed -i "/property.name=/ s/=.*/=newValue/" yourFile.properties

Это будет печатать в новый файл

sed "/property.name=/ s/=.*/=newValue/" yourFile.properties > newFile.properties

Так вы обновите несколько свойств

sed -i -e "/property.name.1=/ s/=.*/=newValue1/" -e "/property.name.2=/ s/=.*/=newValue2/" yourFile.properties

Гуру sed могут обвинять меня, так как это не самый правильный способ сделать это (например, я не избежал точек), но я считаю это лучшим вариантом, когда вы не хотите жертвовать удобочитаемостью.

Вот расширенное обсуждение: Как мне использовать sed для изменения моих файлов конфигурации с помощью гибких ключей и значений?

14 голосов
/ 21 февраля 2012

При условии, что Linux Gnu sed, 1 решение будет

Правки сбежал '.' chars, т.е. s/example\.java.../ за правильный комментарий от Кент

 replaceString=desiredsetting
 sed -i "s/\(example\.java\.property=\).*\$/\1${replaceString}/" java.properties

Если вы используете BSD sed на Mac, например, вам нужно будет указать аргумент для -i, чтобы указать имя файла резервной копии. К счастью, вы можете использовать

 sed -i '' ""s/\(example\.java\.property=\).*\$/\1${replaceString}/" java.properties  

в качестве аргумента и избегайте необходимости управлять файлами .bak в вашем рабочем процессе. (BSD sed информация добавлена ​​2018-08-10)

Если ваш sed не соблюдает -i, тогда вам нужно управлять файлами tmp, т.е.

    sed "s/\(example\.java\.property=\).*\$/\1${replaceString}/" java.properties > myTmp
    /bin/mv -f myTmp java.properties

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...