J'ai un petit script awk qui fait quelques modifications de fichiers sur place (dans un fichier Java .properties
, pour vous donner une idée). Cela fait partie d'un script de déploiement affectant un groupe d'utilisateurs.awk: soit modifier ou ajouter une ligne, en fonction de son existence
Je souhaite pouvoir définir les paramètres par défaut, en laissant le reste du fichier dans les préférences de l'utilisateur. Cela signifie ajouter une ligne de configuration si elle est manquante, la modifier si elle est là, en laissant tout le reste tel quel.
Actuellement, j'utiliser quelque chose comme ceci:
# initialize
BEGIN {
some_value_set = 0
other_value_set = 0
some_value_default = "some.value=SOME VALUE"
other_value_default = "other.value=OTHER VALUE"
}
# modify existing lines
{
if (/^some\.value=.*/)
{
gsub(/.*/, some_value_default)
some_value_set = 1
}
else if (/^other\.value=.*/)
{
gsub(/.*/, other_value_default)
other_value_set = 1
}
print $0
}
# append missing lines
END {
if (some_value_set == 0) print some_value_default
if (other_value_set == 0) print other_value_default
}
Surtout quand le nombre de lignes que je veux contrôler devient plus grande, cela est de plus en plus lourd. Ma connaissance de awk n'est pas tout ce grand, et le dessus juste se sent mal - comment puis-je rationaliser cela?
P.S .: Si possible, j'aimerais rester avec awk. S'il vous plaît ne recommande pas simplement que l'utilisation de Perl/Python/tout serait beaucoup plus facile. :-)
Ce que vous avez posté semble être awk, sed non. –
J'étais tellement absorbé par l'écriture que je ne l'ai même pas remarqué. Corrigée. – Tomalak
Perl/Python/Quoi de plus facile ;-) –