목록을 생성하려면 sed에 새 줄을 추가하세요. 백슬래시 이스케이프가 작동하지 않습니다.

목록을 생성하려면 sed에 새 줄을 추가하세요. 백슬래시 이스케이프가 작동하지 않습니다.

각 이름 뒤에 새 줄을 추가하고 싶습니다. 내 파일에는 다음이 포함됩니다.

Smoker, M., Schauser, L., Yoshioka, H.,

내가 원하는 것은:

Smoker, M
Schauser, L
Yoshioka, H

그래서 sed에서 여러 옵션을 사용했습니다.

sed 's%\., %\n%g'
sed 's%\., %\r%g'
sed -E 's%\., %\r\n%g'

비슷하지만 항상 개행 문자 대신 ror를 얻습니다.n

흡연자, 남N사우스, L.N요시오카, H.N
         ↑ ↑ ↑

저는 Mac OS sed를 사용하고 있습니다.

답변1

"sed"가 s///의 RHS에서 "\n"을 지원하지 않는 경우 다음을 시도해 볼 수 있습니다.

sed -e '/\.,/!d' -e 'G;s/\.,[ ]*\(.*\(.\)\)$/\2\1/' -e 'P;D' < yourfile

TAB이 없다고 가정하면 입력 데이터는 그림과 같습니다. 우리는 개행 문자를 제공하기 위해 "G"를 통해 패턴 공간에 주입된 기본 "sed"를 사용하며, 원하는 결과를 얻기 위해 필요에 따라 익명으로 개행 문자를 이동할 수 있습니다.

답변2

이것은 BSD sed 및 bash를 사용하여 작동하는 것 같습니다.

sed $'s/\., */\\\n/g'

리터럴 점, 쉼표 및 공백의 모든 시퀀스를 개행 문자로 바꿔야 합니다.

$'\n'개행 구문을 지원하는 셸이 없으면 다음을 시도해 볼 수 있습니다.

sed 's/\., */\
/g'

즉, 백슬래시까지 모든 내용을 입력한 다음 클릭 Enter 하고 완료 를 클릭하세요 /g'. 또는 쉘의 입력 모드 설정 방법에 따라 Ctrl+ V다음에 Ctrl+를 입력하면 J명령을 평가하지 않고 개행 문자를 삽입할 수 있습니다.

답변3

당신은 확실히 그것을 원 \n하고 원하지 않습니다 \r.

하지만,

sed 's%\., %\n%g'

저에게는 효과가 있는데 왜 당신이 어려움을 겪고 있는지 모르겠습니다.

이중 백슬래시를 사용하면 문제가 해결될 수도 있습니다. 또는 대신에 control-v control-m(화면에 표시됨 \n)을 사용해 보십시오.^M

관련 정보