sed hat den `s'-Befehl nicht beendet

sed hat den `s'-Befehl nicht beendet

Ich erhalte:

sed: -e expression #1, char 46: unterminated `s' command

Zu diesem Code:

sed -i.bak -c 's|net.ipv4.ip_forward.*|net.ipv4.ip_forward = 1|' /etc/sysctl.conf

Mein Editor zeigt an, dass Zeichen 46 zwischen den Sonderzeichen .* steht.

Ich arbeite an Maschinen von CentOS 5 bis 6.5.

Das Ändern des Trennzeichens hat nicht geholfen, ebenso wenig wie die Verwendung von " statt ', und der Code scheint auf dem Terminal von Linux Mint 17.3 zu funktionieren, abzüglich -c. Ich denke, es interpretiert möglicherweise das . oder das * nicht als Sonderzeichen.

Ich habe es versucht :

sed 's/net.ipv4.ip_forward.*/net.ipv4.ip_forward = 1/' /etc/sysctl.conf

Es hat 10 Minuten gedauert und nichts bewirkt, also habe ich es gestoppt. Funktioniert unter Mint 17.3.

Antwort1

Das Problem war, dass mein Redakteur dumm war und ich dachte, es sei ein Zeilenumbruch.

Wenn ich

sed -i.bak -c 's|net.ipv4.ip_forward.*|net.ipv4.ip_forward = 1|' /etc/sysctl.conf

Im Editor berührte die Datei "/etc/sysctl.conf" den Rand des Fensters, sodass ein Teil davon in der nächsten Zeile angezeigt wurde. Ich dachte, es wäre nur ein Zeilenumbruch, aber nein. Centos oder Nano haben entschieden, dass "/etc/sysctl.conf" in eine neue Zeile eingefügt werden sollte, wenn ich die Datei hochlade oder den Code hineinkopiere. Ich habe die neue Zeile manuell gelöscht und es funktioniert normal.

Bearbeiten: Immer wenn ich nano verwende und ein / eingebe, während sich der Text dem Ende des Fensters nähert, entscheidet es sich, ihn in eine neue Zeile zu setzen, komisch. Es verhält sich wie ein Zeilenumbruch, aber stattdessen macht es einfach alles kaputt.

Diese neue Zeile existiert dort, von wo ich sie hochlade, nicht.

Fuuuuuuuuuuu

verwandte Informationen