Windows와 Unix/Linux 형식간에 텍스트 파일의 줄 바꿈을 어떻게 변환합니까?
* nix 환경이 있지만 Windows 스타일 줄 바꿈으로 데이터를 가져오고 내 보내야합니다. 이 작업을 수행하는 표준 유틸리티 또는 명령이 있다고 생각했지만 찾을 수없는 것 같습니다.
배포판에 따라 dos2unix
, unix2dos
, todos
또는 fromdos
을 찾고있을 것입니다. 메모리에서 tofrodos 패키지의 일부로 우분투/데비안 패키지 todos
/fromdos
.
한 가지 옵션은 명령 행에서 unix2dos
(및 되돌아 가려면 dos2unix
)를 사용하는 것입니다.
다른 하나는 텍스트 편집기를 사용하는 것입니다.
vi : : set ff = dos를 사용하여 줄 끝을 do 줄 끝으로 설정하십시오.
emacs의 경우 : C-x [ENTER] 작업 수행 [ENTER]
선호하는 GUI 기반 편집기 (예 : jedit)의 경우 설명서 또는 Google을 확인하는 것이 좋습니다.
마지막으로 텍스트 편집기를 다루고 싶지 않고 더 일반적인 유틸리티를 사용하여 설치하거나 unix2dos가 설치되어 있지 않은 경우 :
tr -d '\r' < infile > outfile
Windows-> Unix에서 이동awk 'sub("$", "\r")' unixfile.txt > winfile.txt
Unix-> Windows로 이동하려면 tr
는 Unix에서 Windows로 이동할 수 없습니다.
Vim에서 편집하고 set fileformat
명령.
MS-DOS/Windows (CR + LF 나누기)에서 * nix (LF 만 끊기)
:set fileformat=unix
:wq
* nix-MS-DOS/Windows
:set fileformat=dos
:wq
이것은 Chealion과 유사하게 Windows를 Unix 줄 끝으로 변환하는 데 사용하는 것입니다.
tr -d \\015 < windows > unix
POSIX로 이것을하는 것은 까다 롭습니다 :
POSIX Sed 는 \r
또는 \15
를 지원하지 않습니다. 그랬어도 인플레 이스 옵션 -i
는 POSIX가 아닙니다.
POSIX Awk 는 \r
및 \15
를 지원하지만 -i inplace
옵션은 POSIX가 아닙니다.
d2u 및 dos2unix 는 POSIX 유틸리티 가 아닙니다. 하지만 ex 는
POSIX ex\r
, \15
, \n
또는 \12
를 지원하지 않습니다
캐리지 리턴을 제거하려면 다음을 수행하십시오.
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\r","");print>ARGV[1]}' file
캐리지 리턴을 추가하려면 다음을 수행하십시오.
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file