sed
명령을 사용하여 소스 문자열에서 대상 문자열을 추출하고 싶습니다.C 프로그램에서 sed를 사용할 때 "알 수없는 이스케이프 시퀀스"경고
명령이 Linux 셸에서 실행중인 경우 제대로 작동합니다. 여기
echo A=B | sed -e 's/.*=\(.*\)/\1/'
이 명령은 "="이후에 문자열을 추출하고, 그 결과는 문자열 "B"이고, 예이다. 이 명령 등
popen("echo A=B | sed -e 's/.*=\(.*\)/\1/'", "r")
하는 C 프로그램에서 호출되는 경우 상태를 컴파일
그러나, 경고 메시지 {"warning: unknown escape sequence: '\)'}
도시된다.
'\)'
앞에 백 슬래시를 추가하라는 제안이 있지만이 경우에는 작동하지 않습니다. 아무도 이것을 해결하는 방법을 알고 있습니까?
P. 코드를 popen("echo A=B | sed -e 's/.*=\\(.*\\)/\\1/'", "r")
로 유도하는 모든 '\'앞에 백 슬래시를 추가하면 작동합니다.
그러나 결과는 "B"대신 "B \ n"이고 접미사 "\ n"을 제거 할 수있는 방법이 있습니까?
은 당신 때문에 특수 문자를 이스케이프 할 필요가 1''\ ''을 원한다면''\\ ''을 써야합니다. \\ * \\)/\\ 1/' ","r ")' – mch
다른 \를 앞에 추가하십시오. * \의 모든 발생. –
'fopen' 대신'popen'을 사용합니까? –