MaxOSX에서 sed를 사용할 때\n 개행 대신 n을 인쇄하세요.

MaxOSX에서 sed를 사용할 때\n 개행 대신 n을 인쇄하세요.

를 사용할 때 흔히 발생하는 문제 입니다 sed.\nsedsed

내 파일에는 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솔루션이 아마도 훨씬 더 빠를 것입니다.

관련 정보