줄 바꿈을 이스케이프 시퀀스로 바꾸려면 어떻게해야합니까?


3

사용하여 sed문자열 리터럴에 사용되는 특정 문자에 적합가 포함 된 텍스트를 만드는 것은 간단합니다 :

sed "s/\\\\/\\\\\\\\/g"
sed "s/\\\"/\\\\\\\"/g"

그러나 줄 바꿈 문자가 포함 된 텍스트 파일로 비슷한 것을 어떻게 할 수 있습니까?


sed는 찾기 부분에 줄 바꿈 문자를 표시하지 않으며 sed는 기존 프로그램처럼 오래되었습니다. 당신은 펄을 사용할 수 있고, 그것은 sed의 찾기와 바꾸기에 해당합니다.
barlop

답변:



0

sed는 줄 기반이므로 줄 바꿈 문자를 바꾸려고 할 때 문제가 발생할 수 있습니다.

sed의 공식 문서는 줄 바꿈 문자 및 sed로 전달되기 전에 제거 된 상태에 대한 특정 참조를 만듭니다.

나는 'tr'이 아마도 여기에 더 적합 할 것이라고 제안합니다.

예를 들어, 개행 문자를 공백으로 바꾸려면 다음을 수행하십시오.

tr '\n' ' ' < inputfile

[\r\n]깨끗 하지 않습니까?
theoden

나는 모든 것이 소스 데이터와 요구 사항에 달려 있다고 생각합니다. OP는 개행 만 참조했습니다. 나는 두 가지를 모두 시도하고 어느 것이 가장 좋은 결과를 낼 것인지를 권장합니다. YMMV.
David Moylan

tr "\n" "\\n"이 질문을 게시하기 전에 사용하려고 시도했지만 개행 문자를 백 슬래시로 바꿨습니다. 시퀀스를 하나의 문자로만 바꾸는 것 같습니다.
Melab

@Melab이 맞습니다. 'tr'명령은 단일 문자 교체 만 수행합니다.
David Moylan

그렇다면 어떻게 도움이 되나요?
Melab

0

David Moytan 의 솔루션 을 확장하고 싶습니다 .

cat /etc/passwd | perl -e 'while(<>) { $_ =~ s/[\r\n]/__NEWLINE__/g; print "$_" }'

0

나도이 문제가 있었다.

\ a 함수를 사용하여 적절한 이스케이프 시퀀스로 모든 개행을 시작한 다음 결과 함수를 echo -n으로 파이프하여 개행을 억제 할 수 있습니다.

echo -n $(sed '\a
\\n');

sed 명령 전에 괄호 안에있는 모든 것을 고수하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.