Estoy leyendo mucha documentación sobre sed, y todavía estoy perplejo con mi caso de uso particular.
Quiero reemplazar esta línea en un archivo conf con mi propia línea:
Reemplace esta línea:
#maxmemory <bytes>con:
maxmemory 26gb
Esto es lo que probé:
sed s / maxmemory. * bytes. * / maxmemory 26 gb / /etc/redis/redis.conf
Me sale el error:
sed: -e expresión # 1, char 30: comando 's' sin terminar
Lo que me desconcierta porque no sé lo que eso significa. Entonces mi pregunta es:
¿Cómo puedo lograr lo que quiero? ¿Qué significa ese error? (para que pueda aprender de eso)
/
, como@
o|
. Consulte aquí: stackoverflow.com/a/9366940/4561887 y aquí: unix.stackexchange.com/a/259087/114401 .En efecto
El error significa que, en ausencia de comillas, su shell utiliza espacios para separar los argumentos. Por lo tanto, se considera que el espacio entre
maxmemory
y26gb
termina el primer argumento, que por lo tanto carece de terminal/
cuando sesed
trata de analizar ese argumento como uno de sus comandos.Poner su expresión regular entre comillas simples, para que su shell no lo divida en múltiples argumentos y lo entregue
sed
como un solo argumento, resuelve el problema:mientras
trabajos.
Espero que ayude.
fuente
sed
eso lo que hace esto. Es el caparazón que hace esto.Su caso de uso será resuelto por este comando.
fuente