Eu tenho o seguinte arquivo de propriedades Java que é mantido por seres humanos.
# file.input = /very/old/name
# file.input = /old/name
file.input = /current/name
file.input.default = /default/name
other.file.input = /current/other/name
# Other comments
other.properties = must stay the same
Eu preciso criar um script que edite esse arquivo sem tocar no resto dos arquivos. Portanto, não posso descarregar novas propriedades no arquivo de configuração.
Os humanos geralmente copiam / colam uma linha e comentam para uso posterior. Meu aplicativo deve editar exclusivamente o arquivo de configuração sem tocar em nenhum dos comentários.
Neste caso específico, quero editar a linha file.input
para definir o valor como /new/name
sem nenhuma linha comentada ser tocada e sem que outras propriedades também sejam tocadas ( file.input.default
, other.file.input
). Meu script não manterá a linha atual para fins de história, como os humanos costumam fazer. Além disso, não sei o valor atual definido para a chave file.input
.
Onde estou preso? Bem no começo. Eu não sou um especialista em Bash, eu raramente uso, exceto para chamar comandos em sequência e eu uso alguns ifs às vezes. Mas isso é tudo.
Eu poderia usar perl
para usar expressões regulares, mas o perl aparentemente não está instalado neste sistema. Então, voltei para sed
, mas não consigo nada disso: parece que posso substituir apenas um valor específico por outro. Eu poderia embrulhar isso na leitura do arquivo e reescrevê-lo, exceto pela linha esperada que eu poderia mudar. Além disso, eu mal seria capaz de lidar com espaços humanos adicionados na frente da propriedade que eu quero mudar.
Então, se você tiver uma alternativa, compartilhe-a, porque eu começo a ficar alienada.