Estou entendendo:
sed: -e expression #1, char 46: unterminated `s' command
Neste código:
sed -i.bak -c 's|net.ipv4.ip_forward.*|net.ipv4.ip_forward = 1|' /etc/sysctl.conf
Meu editor está mostrando que o caractere 46 está entre os caracteres especiais .*.
Estou trabalhando em máquinas centos 5 a 6,5.
Alterar o delimitador não ajudou nem usar " em vez de ' e o código parece funcionar no terminal do linux mint 17.3, menos o -c. Acho que pode estar interpretando o . ou o * não como um caractere especial.
Tentei :
sed 's/net.ipv4.ip_forward.*/net.ipv4.ip_forward = 1/' /etc/sysctl.conf
Demorou 10 minutos e não fez nada, então parei. Funciona no mint 17.3.
Responder1
O problema é que meu editor estava sendo estúpido e pensei que fosse uma quebra de linha.
Quando eu coloco
sed -i.bak -c 's|net.ipv4.ip_forward.*|net.ipv4.ip_forward = 1|' /etc/sysctl.conf
No editor, o "/etc/sysctl.conf" tocaria a borda da janela para exibir parte dela na próxima linha. Eu pensei que era apenas quebra de linha, mas não. Centos ou nano decidiram que "/etc/sysctl.conf" deveria ser colocado em uma nova linha se eu carregasse o arquivo ou copiasse o código nele. Excluí manualmente a nova linha e ela funciona normalmente.
Editar: Sempre que estou usando o nano e digito / enquanto o texto está se aproximando do final da janela, ele decide colocá-lo em uma nova linha, werid. Ele age como se fosse uma quebra de linha, mas em vez disso quebra tudo.
Essa nova linha não existe de onde estou enviando.