를 사용할 때 흔히 발생하는 문제 입니다 sed
.\n
sed
sed
내 파일에는 myfile
다음 내용이 포함되어 있습니다.
1 2 3 4 5
내가 이것을 사용할 때 :
sed 's/ /\n/g' myfile
알겠어요:
1n2n3n4n5
이것을 얻는 대신:
1
2
3
4
5
문제가 어디에 있는지 아는 사람이 있나요?
답변1
귀하는 을(를) 사용하고 있으므로 OSX 10.8
귀하의 sed
도구는 FreeBSD sed
가 아닙니다 GNU sed
. 따라서 개행 문자로 FreeBSD sed
해석되지 않습니다 .\n
당신은 시도 할 수 있습니다:
$ sed 's/ /\'$'\n/g' myfile
$'\n/g'
문자열을 표준 이스케이프 확장으로 해석 하여 bash
처리하기 \n
전에 개행 문자로 변환합니다 .sed
또는 tr
대신 사용하십시오 sed
:
$ tr -s ' ' '\n' < myfile
답변2
Gnouc은 그 이유를 잘 알고 있지만 \n
명령문 오른쪽에 a를 지정하는 이식 가능한 방법은 다음 s///
과 같습니다.
s//\
/
G
그러나 다음과 같이 빈 예약 공간에서 패턴 공간 끝에 ewline을 \n
추가 할 수도 있습니다 .
G
오른쪽에 있는 y
번역 연산자와 함께 번역 연산자를 사용할 수도 있습니다 . \n
그래서 당신의 ...
sed 's/ /\n/g' myfile
...이렇게 작성하면 예상한 대로 작동할 것입니다...
sed 'y/ /\n/' myfile
...그리고 동일한 작업을 수행할 수도 있다는 추가 이점이 있습니다.매우 작은더 빠르게. Gnouc의 tr
솔루션이 아마도 훨씬 더 빠를 것입니다.