Unix sed 명령은 이스케이프된 n 백슬래시를 \n
개행 문자로 인식하지 않습니다. 예를 들어, 이 명령은 sed "s!,!\n!g"
입력 텍스트의 쉼표를 개행 문자 대신 문자 n으로 바꿉니다.
\n
sed가 개행 문자를 해석하게 하려면 어떻게 해야 합니까 ?
답변1
를 사용하는 경우 bash
아래와 같이 Enter 키를 눌러 개행 문자를 삽입할 수 있습니다.
sed 's!,!\
!g'
답변2
sed "s/,/\n/g"
여기 bash에서 작동합니다.
답변3
sed의 Mac 버전에는 이러한 어려움이 있습니다. sed의 GNU 버전을 설치해 보세요 brew install coreutils
.
gsed "s/,/\\n/g"
작동해야합니다. 또는 tr ',' \\n
검색 문자열이 단 한 문자인 경우에도 작동합니다.
답변4
실제로 Unix Echo + Sed는 항상 \n을 개행 문자로 처리하지 않습니다. 나는 캐리지 리턴 ASCII 0xd와 수직 탭 ASCII 0xb를 제공하여 이 문제를 해결했습니다.
예를 들어, sed 명령을 사용하여 변수를 사용하여 개행 문자를 추가합니다.
eol="\xd\xb"
echo -e "hello" | sed "s/$/$eol/"