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 머신에서 작업하고 있습니다.

구분 기호를 변경해도 도움이 되지 않았고 '대신'을 사용하지도 않았으며 코드는 -c를 뺀 Linux Mint 17.3의 터미널에서 작동하는 것 같습니다. . 또는 *를 특수 문자가 아닌 것으로 해석하는 것일 수도 있습니다.

나는 시도했다 :

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를 사용하고 /를 입력할 때마다 텍스트가 창 끝에 접근하는 동안 새 줄에 넣기로 결정합니다. 단어 줄 바꿈처럼 작동하지만 대신 모든 내용을 깨뜨립니다.

해당 새 줄은 내가 업로드하는 곳에 존재하지 않습니다.

푸우우우우우우우

관련 정보