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에있는 것은 역사적인 것으로 새 스크립트에는 사용해서는 안됩니다.
답변
경우 H
oldspace이 당신도 할 수 비우 :
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"