comando sed `s' sin terminar

comando sed `s' sin terminar

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.

Fuuuuuuuuuuu

información relacionada