sed незавершенная команда `s'

sed незавершенная команда `s'

Я получаю:

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

По этому коду:

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

Мой редактор показывает, что символ 46 находится между специальными символами .*.

Я работаю на машинах с CentOS 5-6.5.

Изменение разделителя не помогло, как и использование " вместо ', и код, похоже, работает на терминале Linux Mint 17.3, без -c. Я думаю, что он может интерпретировать . или * не как специальный символ.

Я пытался :

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

Это заняло 10 минут и ничего не дало, поэтому я остановил это. Работает на Mint 17.3.

решение1

Проблема была в том, что мой редактор был глупым, и я думал, что это перенос слов.

Когда я ставлю

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

В редакторе "/etc/sysctl.conf" касался края окна, поэтому отображал его часть на следующей строке. Я думал, что это просто перенос слов, но нет. Centos или nano решили, что "/etc/sysctl.conf" следует поместить на новую строку, если я загружаю файл или копирую в него код. Я вручную удалил новую строку, и она работает нормально.

Редактировать: Всякий раз, когда я использую nano и нажимаю /, пока текст приближается к концу окна, он решает перенести его на новую строку, werid. Это действует как перенос слов, но вместо этого просто все ломает.

Там, откуда я ее загружаю, этой новой строки не существует.

Фууууууууу

Связанный контент