sed에서 \n을 줄바꿈으로 바꾸세요.

sed에서 \n을 줄바꿈으로 바꾸세요.

저는 GNU sed, POSIX sed, BSD 에 대한 sed셀 수 없이 많은 옵션 때문에 매우 혼란스럽습니다 . \n이 세 가지 유형을 사용하여 텍스트를 줄바꿈으로 바꾸려면 어떻게 해야 합니까 ?sed

답변1

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

Enter 키를 누르기 전에 대체 문자열의 백슬래시를 기록해 두십시오.

답변2

이제 이식 가능한 답변을 얻었으므로 어떤 방식으로든 개행 문자를 조작해야 하는 경우 이것이 사용하기에 가장 좋은 도구는 아니라는 sed점을 언급하고 싶습니다 . sedPerl은 거의 이식 가능하며 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의 awk는 기록 버전이므로 새 스크립트에 사용하면 안 됩니다.

답변3

oldspace가 비어 있으면 H다음을 수행할 수도 있습니다.

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

...하지만Uxnut의 답변이미 더 빠르고 간단해져서 원하는 것은 무엇이든 할 수 있습니다.

관련되지 않은 또 다른 가능성:

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

하지만 ^that은 ackspace, eturn, 8진수 등과 같은 모든 표준 C 스타일 \백슬래시 이스케이프를 변환한다는 점에 유의하세요.\b\r\00

답변4

나는 sed를 좋아하지만 가장 간단하고 이식성이 뛰어난 솔루션은 echo를 사용하는 것이라고 생각합니다.

echo -e "string with\n in it"

또는 파일에 "\n"이 있는 문자열이 포함된 경우 명령 대체를 사용하십시오.

echo -e $(filename)

그런 다음 필요에 따라 리디렉션을 추가하여 파일에 저장합니다.

관련 정보