À l'aide de sed pour mettre à jour une propriété dans un fichier de propriétés java
Je voudrais un simple liner avec sed la mise à jour de java valeur de la propriété. Sans savoir ce que le réglage actuel de la propriété java est, et il peut être vide)
Modifications échappé". ' caractères c'est à dire s/example\.java.../ par commentaire approprié par Kent
replaceString=desiredsetting
sed -i "s/\(example\.java\.property=\).*$/${replaceString}/" java.properties
Si vous utilisez BSD sed sur un Mac par exemple, vous aurez besoin de fournir un argument à la -i pour indiquer le nom du fichier de sauvegarde. Heureusement, vous pouvez utiliser
sed -i ''""s/\(example\.java\.property=\).*$/${replaceString}/" java.properties
comme argument, et éviter d'avoir à gérer .bak fichiers dans votre flux de travail. (BSD sed info ajoutée 2018-08-10)
Si votre sed ne pas honorer la -i, alors vous avez à gérer les fichiers tmp, c'est à dire
sed "s/\(example\.java\.property=\).*$/${replaceString}/" java.properties > myTmp
/bin/mv -f myTmp java.properties
J'espère que cette aide.
-1 bien que l'OP a accepté cette réponse. la dot n'est pas échappé, il signifie "n'IMPORTE quel caractère" il pourrait changer le mal de propriété dans le fichier. c'est dangereux! Dangereux semble comme un terme fort. Mais merci pour votre aide à faire mon post mieux. Hoofamon : consultez révisé à la poste pour améliorer les remplacements sur votre propriété java. Bonne chance à tous.
sed -i "/property.name=/s/=.*/=newValue/" yourFile.properties
Ce sera imprimé dans un nouveau fichier
sed "/property.name=/s/=.*/=newValue/" yourFile.properties > newFile.properties
C'est une façon de mettre à jour plusieurs propriétés
sed -i -e "/property.name.1=/s/=.*/=newValue1/"-e "/property.name.2=/s/=.*/=newValue2/" yourFile.properties
Gourous de sed peut me blâmer car ce n'est pas la bonne façon de le faire (par exemple, je n'ai pas échapper les points) mais je vois cela comme la meilleure option si vous ne voulez pas sacrifier la lisibilité.
En supposant que Linux Gnu sed, 1 solution serait
Modifications échappé". ' caractères c'est à dire
s/example\.java.../
par commentaire approprié par KentSi vous utilisez BSD
sed
sur un Mac par exemple, vous aurez besoin de fournir un argument à la-i
pour indiquer le nom du fichier de sauvegarde. Heureusement, vous pouvez utilisercomme argument, et éviter d'avoir à gérer
.bak
fichiers dans votre flux de travail. (BSDsed
info ajoutée 2018-08-10)Si votre sed ne pas honorer la
-i
, alors vous avez à gérer les fichiers tmp, c'est à direJ'espère que cette aide.
Dangereux semble comme un terme fort. Mais merci pour votre aide à faire mon post mieux. Hoofamon : consultez révisé à la poste pour améliorer les remplacements sur votre propriété java. Bonne chance à tous.
OriginalL'auteur shellter
Cette mise à jour de votre fichier:
Ce sera imprimé dans un nouveau fichier
C'est une façon de mettre à jour plusieurs propriétés
Gourous de sed peut me blâmer car ce n'est pas la bonne façon de le faire (par exemple, je n'ai pas échapper les points) mais je vois cela comme la meilleure option si vous ne voulez pas sacrifier la lisibilité.
Ici élargie de la discussion:
Comment puis-je utiliser sed pour modifier mes fichiers de configuration, avec des clés et des valeurs?
OriginalL'auteur DenisS