Je lis beaucoup de documentation sur sed, et je suis toujours perplexe sur mon cas d'utilisation particulier.
Je veux remplacer cette ligne dans un fichier conf par ma propre ligne:
Remplacez cette ligne:
#maxmemory <bytes>avec:
maxmemory 26gb
Voici ce que j'ai essayé:
sed s / maxmemory. * octets. * / maxmemory 26 Go / /etc/redis/redis.conf
Je reçois l'erreur:
sed: -e expression # 1, char 30: commande `s 'non terminée
Ce qui me bloque parce que je ne sais pas ce que cela signifie. Ma question est donc:
Comment puis-je accomplir ce que je veux? Que signifie cette erreur? (donc je peux en tirer des leçons)
/
, comme@
ou|
. Voir ici: stackoverflow.com/a/9366940/4561887 et ici: unix.stackexchange.com/a/259087/114401 .En effet
L'erreur signifie qu'en l'absence de guillemets, votre shell utilise des espaces pour séparer les arguments. L'espace entre
maxmemory
et26gb
est donc considéré comme terminant le premier argument, qui manque donc de terminal/
lorsqu'ilsed
s'agit d'analyser cet argument comme l'une de ses commandes.Mettre votre regex entre guillemets simples, afin que votre shell ne le divise pas en plusieurs arguments et ne le remette pas
sed
en un seul argument, résout le problème:tandis que
travaux.
J'espère que cela pourra aider.
la source
sed
ça qui fait ça. C'est la coquille qui fait ça.Votre cas d'utilisation sera résolu par cette commande.
la source