Windows와 Unix / Linux 형식간에 텍스트 파일에서 줄 바꿈을 변환하는 방법은 무엇입니까?


33

Windows와 Unix / Linux 형식간에 텍스트 파일에서 줄 바꿈을 어떻게 변환합니까?

* nix 환경이 있지만 Windows 스타일 줄 바꿈으로 데이터를 가져오고 내 보내야합니다. 이 작업을 수행하는 표준 유틸리티 또는 명령이 있다고 생각했지만 찾을 수없는 것 같습니다.

답변:


42

당신은 아마 찾고 dos2unix, unix2dos, todos또는 fromdos귀하의 분포에 따라 달라집니다. 메모리 에서 tofrodos 패키지의 일부로 Ubuntu / Debian 패키지 todos/fromdos


4
Windows 솔루션을 찾는 사람 이이 질문을 발견하면 업스트림 사이트 dos2unixwaterlan.home.xs4all.nl/dos2unix.html 이며 Windows에서도 작동합니다.
울다

Homebrew를 사용하여 Mac OS X에 dos2unix/unix2dos 를 설치할 수 있습니다 . Homebrew가 설치된 경우 명령은 입니다. 이 수식 을 사용 합니다 . brew install dos2unix
Rory O'Kane

24

하나의 옵션은 사용하는 것입니다 unix2dos(그리고 dos2unix돌아갈에 대한) 명령 행을.

또 다른 방법은 텍스트 편집기를 사용하는 것입니다.
vi : : set ff = dos의 경우 줄 끝을 do 행 끝으로 설정하십시오.
이맥스 : Cx [ENTER] f dos [ENTER]

선호하는 GUI 기반 편집기 (예 : jedit)의 경우 설명서 또는 Google을 확인하는 것이 좋습니다.

마지막으로 텍스트 편집기를 다루고 싶지 않고 더 일반적인 유틸리티를 사용하여 설치하거나 unix2dos가 설치되어 있지 않은 경우 :

tr -d '\r' < infile > outfileWindows-> Unix
awk 'sub("$", "\r")' unixfile.txt > winfile.txt에서 Unix-> Windows로 tr이동하려면 Unix에서 Windows로 이동할 수 없습니다.


dos2unix가 트릭을 만들었지 만 tr 유틸리티 덕분에 과거에는 많은 시간을 절약 할 수있었습니다!
alexeit

파일이 혼합 라인 엔딩이있는 경우, 적절한에로드해야합니다 ff: :e ++ff=unix. 적어도 dos -> unix변환 에는 의미가 있습니다.
x-yuri

그 awk 한 라이너는 사람에게 낚시를 가르치고 있습니다. 나는 미래에 약간 덜 배고픈 수 있습니다
가레스 데이비슨

13

Vim에서 편집하고 set fileformat명령을 사용하십시오 .

  • MS-DOS / Windows (CR + LF 나누기)에서 * nix (LF 만 끊기)

    :set fileformat=unix
    :wq
    
  • * nix-MS-DOS / Windows

    :set fileformat=dos
    :wq
    

파일에 마지막 줄에 줄 바꿈이없는 경우 사용할 때주의하십시오. vim은 사용자에게 지시하지 않는 한이를 추가합니다.
CesarB 2016 년

다른 모든 솔루션을 시도한 후 몇 시간이 지나면 내가 필요한 생명의 은인이었습니다. OS X Yosemite에서 동작 확인 hexdump -C-또한 끈적 거리지 않음 - vi세션 별로 설정 됨
Techmag

8

이것은 Windows를 Unix 줄 끝으로 변환하기 위해 Chealion과 유사하게 사용하는 것입니다.

tr -d \\015 < windows > unix

포스터는 유닉스에서 윈도우 라인 엔딩을 원했습니다. 그리고 당신은 대답하기 몇 년 늦었습니다.
ott--

5
"년이 지났다"면 누가 신경 쓰나요? 여전히 작동하며 질문에 여전히 적용 가능합니다. 나는 나처럼 독자들에게 또 다른 옵션을 추가하고 있었다. 또한 그의 질문은 Windows-> Unix를 요구하고, 그의 설명은 Unix-> Windows를 요구합니다. 어깨를 으
Josh

권리. 아마도 유닉스를 창으로 변환하기 위해 다른 tr 명령을 추가 할 수 있습니다.
ott--

downvote를 취소하려고했지만 기사가 편집 될 때까지 잠겨 있다고했습니다.
ott-- 21:09에

@ ott-- 문제 없습니다, 당신을 위해 찬성했습니다. ... 대기, 지금 내가 나를 위해 찬성 투표 수 없습니다! ... dang ... :)
Alois Mahdal

1

POSIX로 이것을하는 것은 까다 롭습니다 :

  • POSIX Sed\r또는을 지원하지 않습니다 \15. 그랬더라도 in place 옵션 -i은 POSIX가 아닙니다.

  • POSIX Awk\r및을 지원 \15하지만 -i inplace옵션은 POSIX가 아닙니다.

  • d2udos2unixPOSIX 유틸리티 가 아니지만 ex

  • POSIX 전은 지원하지 않습니다 \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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.