Me estoy poniendo:
sed: -e expression #1, char 46: unterminated `s' command
En este código:
sed -i.bak -c 's|net.ipv4.ip_forward.*|net.ipv4.ip_forward = 1|' /etc/sysctl.conf
Mi editor muestra que el carácter 46 está entre los caracteres especiales .*.
Estoy trabajando en máquinas centos 5 a 6,5.
Cambiar el delimitador no ayudó ni usar " en lugar de ' y el código parece funcionar en la terminal de Linux Mint 17.3, menos el -c. Creo que podría estar interpretando el . o el * no como un carácter especial.
Lo intenté :
sed 's/net.ipv4.ip_forward.*/net.ipv4.ip_forward = 1/' /etc/sysctl.conf
Me tomó 10 minutos y no hizo nada, así que lo detuve. Funciona en perfecto 17,3.
Respuesta1
El problema fue que mi editor estaba siendo estúpido y pensé que era un ajuste de palabras.
cuando puse
sed -i.bak -c 's|net.ipv4.ip_forward.*|net.ipv4.ip_forward = 1|' /etc/sysctl.conf
En el editor, "/etc/sysctl.conf" tocaría el borde de la ventana, por lo que mostraría parte de ella en la siguiente línea. Pensé que era solo un ajuste de palabras, pero no. Centos o nano decidieron que "/etc/sysctl.conf" debería colocarse en una nueva línea si cargaba el archivo o copiaba el código en él. Eliminé manualmente la nueva línea y funciona normalmente.
Editar: cada vez que uso nano y escribo / mientras el texto se acerca al final de la ventana, decide ponerlo en una nueva línea, raro. Actúa como si fuera un ajuste de palabras, pero en lugar de eso simplemente lo rompe todo.
Esa nueva línea no existe desde donde la estoy subiendo.