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분 정도 걸렸지만 아무것도 안 돼서 멈췄어요. 민트 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를 사용하고 /를 입력할 때마다 텍스트가 창 끝 근처에 있을 때 새 줄에 넣기로 결정합니다. 이상합니다. 이는 단어 줄 바꿈처럼 작동하지만 모든 내용을 깨뜨릴 뿐입니다.

내가 업로드한 곳에 새 줄이 존재하지 않습니다.

우오오오오오오

관련 정보