Le titre dit tout. J'ai besoin de remplacer une valeur de propriété que je ne connais pas à une valeur différente. J'essaye ceci:
#!/bin/bash sed -i "s/myprop=[^ ]*/myprop=$newvalue/g" file.properties
3 Réponses :
sed code> peut utiliser des caractères autres que
/ code> comme délimiteur, même si
/ code> est le plus courant. Lorsqu'il s'agissait de choses comme des chemins de chemin, il est souvent utile d'utiliser quelque chose comme pipe (
| code>). P>
Pour certains SED, vous devrez «échapper» à la première instance d'un délimiteur Reg-ex non standard, comme 's \ | srch | replecteur |'. Bonne chance à tous.
Si votre fichier de propriété est délimité avec alors vous pouvez utiliser maintenant, le code ci-dessus Dans ce cas, vous pouvez effectuer les suivants - p> dans ceci, nous créons un = code> signe comme celui-ci -
awk code> faire modifiy le
param2 code> dans votre fichier de propriétés, nous pouvons effectuer les éléments suivants - P>
one-liner code> vous nécessite
awk code> variable
newval code> et l'initialisez-le avec votre variable de script ($ var) qui contient la nouvelle valeur de paramètre. p> p>
Et si je veux ajouter une nouvelle ligne à la fin si la propriété n'existe pas?
J'ai essayé la commande awk code> indiqué, mais il bande le
= code> hors de la sortie SO sorte de convertir
hostname = oldvalue code> vers
nom d'hôte NewValue Code> - Toute idée de ce que j'ai mal?
@Oly, vous devrez définir la variable de l'OFS. Donc awk -f '=' -v of = '=' ... code>
Merci @jaypalsingh j'ai trouvé cette belle petite description de l'OFS Field: theGeekstuff.com/2010/01/...
awk: newval1 = Test: 8080 / TestServices Erreur de syntaxe Je reçois une erreur de syntaxe pour: Toute aide être très apprécié.
Comment puis-je modifier plus d'un param.
J'ai trouvé une fonction de quelqu'un nommé Kongchen. Il a écrit un script de fonction pour changer de valeurs de propriété et cela a fonctionné bien pour moi: P>
Vérifiez-le: https://gist.github.com/kongchen/6748525 P>
/ code> est juste le délimiteur habituel (mais pas obligatoire) pour
sed code>. Que se passe-t-il si vous essayez autre chose, comme pipe (
| code>)?
@DANFEGO a travaillé! Il m'a fallu de mieux comprendre que le
/ code> dans ma chaîne var était le problème. oublié que vous pouvez changer de délimiteur SED. Merci
Pourquoi utilisez-vous le modificateur
g code> du tout?