아래의 명령은 UNIX에서 제대로 작동하지만 Linux에서는 새 행을 대체하지 않습니다.linux sed가 새 행을 공백으로 바꿉니다. 예상대로 작동하지 않습니다.
#! /bin/sed -f
:loop
/[^]$/N
s/\n//
t loop
여러 옵션을 시도했지만 아무 것도 작동하지 않는 것 같습니다. 어떤 제안?
아래의 명령은 UNIX에서 제대로 작동하지만 Linux에서는 새 행을 대체하지 않습니다.linux sed가 새 행을 공백으로 바꿉니다. 예상대로 작동하지 않습니다.
#! /bin/sed -f
:loop
/[^]$/N
s/\n//
t loop
여러 옵션을 시도했지만 아무 것도 작동하지 않는 것 같습니다. 어떤 제안?
[^]
은 잘못된 표현입니다. 나는 당신의 버전이 sed를 받아들이는 이유를 모르지만 POSIX에서는 목록의 시작 부분에있는 ^
을 반대로한다. 즉, [^abc]
은 a
, b
및 c
을 제외한 모든 문자와 일치합니다.
또한 ]
을 목록에 일치 시키려면 열림 [
또는 반전 ^
바로 뒤에 나타나야합니다. []abc]
은 a
, b
, c
및 ]
과 일치하지만, [^]abc]
은 4 개를 제외한 모든 문자와 일치합니다. 이 때문에 sed는 목록에 대해 ]
을 찾을 수 없으며 오류가 발생하여 실패합니다. `[^]`가정 무엇
#! /bin/sed -f
:loop
/\^$/N
s/\n//
t loop
그것은 꽤 많이 요약합니다. 잘 했어. –
는 일치 :
는\^
를 사용하여 리터럴^
일치 시키려면? – Wintermute이것은 내가 줄의 끝에있는 문자입니다. 그래서 기본적으로이 문자가 발견되면 현재 줄에 다음 줄을 추가하고 싶지 않습니다. – MJ03
다시 확인하려면 "^"로 끝나는 줄에 다음 줄을 추가하지 않는 것이 좋습니까? 내가 묻는 이유는 당신의 질문 제목이 "새 줄이있는 공백"과 관련이 있다고 느낀다는 것입니다. – repzero