csplit은 백슬래시 r \r을 캐리지 리턴으로 간주하지 않습니다.

csplit은 백슬래시 r \r을 캐리지 리턴으로 간주하지 않습니다.

\r\n줄 끝 (CRLF 캐리지 리턴 줄 바꿈)이 있는 파일이 있습니다 .

이 명령의 작동 방식:

$ csplit --silent --prefix=email-emailbad.txt- \
    --digits=3 emailbad.txt '/^\.^M/'+1 '{*}'

실제 캐리지 리턴 문자를 삽입하려면 먼저 CTLR+를 누른 V다음 CTRL+를 눌러야 합니다 .M

인쇄 가능한 문자(SVN 등)만 사용하도록 작동하고 싶습니다.

$ csplit --silent --prefix=email-emailbad.txt- \
    --digits=3  emailbad.txt '/^\.\r/'+1 '{*}'

나는 작은 따옴표와 큰 따옴표를 사용하고 따옴표 없이 사용해 보았습니다. 어떤 제안이라도 환영합니다.

답변1

ksh93, zsh또는 를 사용하는 경우 인용된 문자열 내에서 C 스타일 백슬래시 이스케이프 해석을 수행하는 ksh 확장을 bash사용할 수 있습니다 .$'...'

csplit --silent --prefix=email-emailbad.txt- --digits=3 \
       emailbad.txt $'/^\.\r/+1' '{*}'

그렇지 않으면 printf매우 유사한 방식으로 문자열을 만들 수 있습니다.

csplit --silent --prefix=email-emailbad.txt- --digits=3 \
       emailbad.txt "$(printf '/^\.\r/+1')" '{*}'

관련 정보