[unix] sed에서 \ n을 줄 바꿈으로 바꾸십시오.

GNU sed, POSIX sed및 BSD sed의 수많은 옵션 과 혼동됩니다 . \n이 세 가지 sed유형을 사용하여 리터럴 을 개행 문자로 바꾸려면 어떻게합니까 ?



답변

sed 's/\\n/\
/g'

대체 문자열에서 return 키를 누르기 직전에 백 슬래시를 확인하십시오.


답변

이미 휴대용 sed답변 이 있으므로 줄 sed바꿈을 조작 해야하는 경우 거의 최고의 도구 라고 언급 하지는 않습니다. Perl은 거의 이식성이 뛰어나고 sed대부분의 * nix 시스템에 기본적으로 설치되며이를 매우 쉽게 처리 할 수 ​​있습니다.

printf '%s\n' 'aa\nbb' | perl -pe 's/\\n/\n/g'

또 다른 휴대용 선택은 awk다음과 같습니다.

printf '%s\n' 'aa\nbb' | awk  '{gsub("\\\\n","\n")};1'

Solaris에서는 / usr / xpg4 / bin에 표준 awk를 사용해야합니다. / bin에있는 것은 역사적인 것으로 새 스크립트에는 사용해서는 안됩니다.


답변

경우 Holdspace이 당신도 할 수 비우 :

sed '/\\n/G;s/\\n\(.*\)\(.\)/\2\1/;P;D'

… 그러나 uxnut의 답변 은 이미 더 빠르고 간단하므로 원하는대로 취할 수 있습니다.

또 다른 외부 가능성 :

INPUT | sed -n l | while read v ; do printf "${v%?}" ; done

그러나 ^ ackspace 및 eturn 및 8 진과 \같은 모든 표준 C 스타일 백 슬래시 이스케이프 를 변환합니다 .\b\r\00


답변

gnu sed다음도 작동합니다 :

gsed -n -e 'H;${x;s/\\n/\n/g;p;}'


답변

sed에 솔루션이 필요하며 아래에 이미 나와 있습니다. 하지만 IMHO가 더 쉽고 빠르다는 또 다른 가능성을 추가하고 싶었습니다.

tr -d "\n"


답변