행 끝 유지
sed를 실행하여 Windows에서 대체 작업을 수행했는데 자동으로 행 엔딩이 Unix(\n)로 변환된다는 것을 알게 되었습니다.Windows 행 엔딩(\r\n)을 사용하거나 파일의 행 엔딩을 보존하도록 sed에게 지시하는 옵션이 있습니까?
주의: unxutils의 sed를 사용하고 있습니다.http://unxutils.sourceforge.net/
를 사용할 수 있습니다.-b
파일을 바이너리로 처리하도록 sed 옵션을 지정합니다.그러면 Windows의 sygwin sed 문제가 해결됩니다.
예:sed -b 's/foo/bar/'
줄의 끝부분을 일치시키려면 캐리지 리턴(옵션)을 일치시키고 캡처하여 복사해야 합니다.
예:sed -b 's/foo\(\r\?\)$/bar\1/'
sed man 페이지에서:
-b --표준
이 옵션은 모든 플랫폼에서 사용할 수 있지만 운영 체제가 텍스트 파일과 이진 파일을 구분하는 경우에만 유효합니다.MS-DOS, Windows, Cygwin의 경우와 같이 텍스트파일은 캐리지 리턴과 줄바꿈 문자로 구분된 행으로 구성되며 sed는 끝 CR을 인식하지 않습니다.이 옵션을 지정하면 sed는 입력 파일을 바이너리 모드로 오픈하기 때문에 이 특별한 처리를 요구하지 않고 라인피드로 끝나는 행을 고려합니다.`
이 모든 것들을\n
위해서\r\n
기존 스크립트의 마지막에 다음과 같이 표시됩니다.
sed 's/foo/bar/;s/$/\r/'
또는 아마도
sed -e 's/foo/bar/' -e 's/$/\r/'
위의 두 가지 중 어느 것도 동작하지 않는 경우는, 사용의 버전의 man 페이지를 참조할 필요가 있습니다.sed
그런 옵션이 있는지 확인합니다.*nix 버전은sed
지시 없이 회선 터미네이터를 변경하지 마십시오.
또 다른 대안은 다음과 같이 하는 것입니다.cygwin
버전sed
이런 바람직하지 않은 행동을 해서는 안 됩니다.
또는 (의 sigwin 버전)perl -pe
이 문제는 없는 것 같습니다.
-b 스위치와 리다이렉트만 지정하면 Gnuwin을 억제하여 새로운 회선(win->unix)을 혼란시킬 수 있습니다.-i(인라인) 스위치를 사용하면 문제가 발생합니다.
예: sed.exe - b "s/\xFF\xFE//" c:\temp\in.csv > c:\temp\out.csv
나는 그것을 발견했다.sed-4.4.exe
from https://github.com/mbuilov/sed-windows은 완전한 성공입니다.
- 는 디폴트 모드에서 Windows CRLF 회선 엔딩을 사용합니다.
- 원래 행의 끝을 보존하다
-b
모드 - 사내에서 올바르게 동작합니다.
-i
전환 - also 、 offers offers offers 도 준비되어 있습니다.
-z
를 지정합니다.\0
\n
때로는 편리할 수도 있습니다.
sed 옵션 목록 및 모든 Windows sed 포트 목록을 참조하십시오.
gnuwin32 sed 4.2.1 은, 로 행의 엔딩이 파손되어 있는 것에 주의해 주세요.-bi
「」를 않습니다.-z
모드를 선택합니다.
언급URL : https://stackoverflow.com/questions/4652652/preserve-line-endings
'IT' 카테고리의 다른 글
자동 레이아웃 - UIButton의 고유 크기에는 제목 삽입이 포함되지 않습니다. (0) | 2023.04.18 |
---|---|
그립을 통해서만 크기를 조정할 수 있는 테두리 없이 WPF 창을 만드는 방법은 무엇입니까? (0) | 2023.04.18 |
위 행에서 현재 행으로 값 반환 (0) | 2023.04.18 |
Nodejs를 사용하여 Excel 파일을 작성하는 방법 (0) | 2023.04.18 |
"git reset --hard"를 통해 커밋되지 않은 변경 손실로부터 복구 (0) | 2023.04.18 |