it-swarm-ko.tech

Vim에서 DOS 라인 끝을 리눅스 줄 끝으로 변환

Windows에서 만든 파일을 열면 줄은 모두 ^M로 끝납니다.
한 번에이 문자들을 모두 어떻게 지울 수 있습니까?

645
Bert Hekman

dos2unix 이 작업을 수행하는 명령 줄 유틸리티 또는 사용하는 경우 :%s/^M//g 것입니다 Ctrl-vCtrl-m ^ M을 입력하거나 :set ff=unix 할 수 있고 vim이 대신 할 수 있습니다.

'fileformat'설정의 문서는 여기 이고, vim 위키는 포괄적 인 페이지 끝 줄 변환 페이지 를 가지고 있습니다.

또는 파일을 앞뒤로 많이 움직이면 파일을 변환하고 싶지 않고 :set ff=dos를 수행하기 때문에 vim은 파일을 DOS 파일로 인식하고 라인 종료에 DOS 규칙을 사용합니다.

995
pjz

보기에서 줄 끝을 변경하십시오.

:e ++ff=dos
:e ++ff=mac
:e ++ff=unix

저장 작업으로도 사용할 수 있습니다 (: w는 화면에 보이는 줄 끝을 사용하여 저장하지 않습니다).

:w ++ff=dos
:w ++ff=mac
:w ++ff=unix

명령 줄에서 사용할 수 있습니다.

for file in *.cpp
do 
    vi +':w ++ff=unix' +':q' "$file"
done
249
Ludvig A. Norin

나는 일반적으로

:%s/\r/\r/g

약간 이상하게 보이지만 vim이 라인 피드와 일치하는 방식 때문에 작동합니다. 나는 또한 기억하기 쉽다. :)

153
t-dub

나는 다음 명령을 사용하는 것을 선호한다.

:set fileformat=unix

mac 또는 dos을 사용하여 파일을 Macintosh 또는 MS-DOS/MS-Windows 파일 규칙으로 각각 변환 할 수도 있습니다. 그리고 파일이 이미 올바른 형식으로되어 있다면 아무 일도하지 않습니다.

자세한 내용은 vim 도움말을 참조하십시오.

:help fileformat
75
Sylvain Defresne
:%s/\r+//g

Vim에서는 모든 캐리지 리턴을 제거하고 줄 바꿈 만 남깁니다.

19
mercutio

dos에서 unix로 변환하려면 :set fileformat=unix를 사용하십시오.

16
13
Alex Gartrell

dos2unix는 파일 내용을 직접 수정할 수 있습니다.

임시 파일 리디렉션없이 파일에서 직접 사용할 수 있습니다.

dos2unix input.txt input.txt

위는 가정 된 US 키보드를 사용합니다. 영국 키보드를 사용하려면 -437 옵션을 사용하십시오.

dos2unix -437 input.txt input.txt
9

DOS에서 Unix로 파일 디렉토리 변환

커맨드 라인과 sed를 사용하여 현재 디렉토리의 모든 파일을 확장자 ".ext"로 찾아 모든 "^ M"

@ https://Gist.github.com/sparkida/777317

find $(pwd) -type f -name "*.ext" | while read file; do sed -e 's/^M//g' -i "$file"; done;

또한 위에서 언급 한 ^ M Ctrl+V + Ctrl+M (캐럿 "^"기호와 M을 입력하지 마십시오)

7
Sparkida
tr -d '\15\32' < winfile.txt > unixfile.txt

(참조 : http://kb.iu.edu/data/acux.html )

6
MichaelD

다음 명령으로 :

:%s/^M$//g 

^M 형식 표시 CtrlV 그때 CtrlMCtrlV Vim에게 글자 그대로 입력 된 다음 문자를 가져 오도록 지시합니다.

5
Dave Webb

다음 단계는 dos의 파일 형식을 unix로 변환 할 수 있습니다.

:e ++ff=dos  Edit file again, using dos file format ('fileformats' is ignored).[A 1]
:setlocal ff=unix    This buffer will use LF-only line endings when written.[A 2]
:w   Write buffer using unix (LF-only) line endings.

참조 : http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix

5
ajitomatix

당신이 사용할 수있는:

vim somefile.txt +"%s/\r/\r/g" +wq

또는 dos2unix utility.

4
Christy Wald
:g/Ctrl-v Ctrl-m/s///

CtrlM \r 또는 캐리지 리턴 (DOS 행 끝이 추가하는 문자)입니다. CtrlV vim에게 리터럴을 삽입하도록 지시한다. CtrlM 명령 행에서 문자.

전체적으로 살펴보면,이 명령은 \r를 모두 바꾸고 줄 끝에서 제거합니다.

4
Rob Wells

^ M을 표시하는 것에 대한 의견은 저에게 효과적입니다. 내 vi에 "^ M"을 입력하는 것만으로 아무것도 발견되지 않았습니다. 그만큼 CTRL+VCTRL+M 시퀀스가 완벽하게 해냈습니다.

내 작업 대체 명령은

:%s/Ctrl-V Ctrl-M/\r/g

내 스크린에서 이렇게 보였다.

:%s/^M/\r/g
4
Dannid

아주 쉬운 방법을 찾았습니다. nano로 파일을 엽니 다. nano file.txt

프레스 CTRL+O 저장하기를 원하지만 누르기 전에 Enter, 언론 : ALT+D 도스와 유닉스/리눅스 라인 끝을 바꾸거나, : ALT+M Mac과 유닉스/리눅스 라인 엔딩을 토글 한 다음 Enter 저장하고 CTRL+X 종료합니다.

4
Stefan Sjöberg

다음 명령을 사용할 수 있습니다.
:%s/^V^M//g
여기서 '^'는 사용을 의미합니다. CTRL 키.

3
JayG

아래 명령은 현재 디렉토리의 모든 .sh 파일을 다시 포맷하는 데 사용됩니다. Fedora OS에서 테스트했습니다.

for file in *.sh; do awk '{ sub("\r$", ""); print }' $file >luxubutmp; cp -f luxubutmp $file; rm -f luxubutmp ;done
2
user3220487

나는 이것을 어딘가에서 본 것을 알았다. 다음은 FreeBSD 로그인 팁입니다 :

DOS 파일에서 모든 ^ M 문자를 제거해야합니까? 시험

tr -d \\r < dosfile > newfile
    -- Originally by Dru <[email protected]>
1
Albaro Pereyra

대개 dos2unix 명령을 사용할 수 있습니다. 설명서를 GNU로 읽고 BSD 버전이 인수를 다루는 방법에 차이가 있는지 확인하십시오.

BSD 버전 :

dos2unix $FILENAME $FILENAME_OUT
mv $FILENAME_OUT $FILENAME

GNU 버전 :

dos2unix $FILENAME

또는 제안 된 답변 중 하나를 사용하여 직접 dos2unix를 직접 만들 수도 있습니다 (예 :

function dos2unix(){
    [ "${!}" ] && [ -f "{$1}" ] || return 1;

    { echo ':set ff=unix';
      echo ':wq';
    } | vim "${1}";
}
1
dsm

직접 리눅스 콘솔로 실행하려면 : vim file.txt +"set ff=unix" +wq

1
CBuzatu

Vim에서 다음을 입력하십시오.

:w !dos2unix %

현재 버퍼의 내용을 dos2unix 명령으로 파이프하고 현재 내용에 결과를 씁니다. Vim은 파일을 다시로드하도록 요청할 것입니다.

1
Tallak Tveide

windows에서 NotePad 또는 NotePad ++로 파일을 생성하여 Linux로 가져 와서 vim으로 열면 각 줄의 끝에 ^ M이 표시됩니다. 이것을 제거하기 위해,

리눅스 터미널에 다음을 입력하십시오.

dos2unix filename.ext

이것은 필요한 마술을 할 것입니다.

0
Santle Camilus

이 주제가 아주 오래되었지만 위키의 다른 내용을 넣고 싶습니다.

%s/\r\+$//g

채우기는 줄 끝까지 모든 캐리지 리턴 부호 (하나 이상의 담당자)를 찾아 삭제하므로 \n 만 eol에 머물러 있습니다.

0
loadaverage

이게 내 방법이야. dos EOL에 파일을 열었고 unix EOL로 자동 변환 될 파일을 저장할 때

autocmd BufWrite * :set ff=unix
0
Thomas PABST

나는 ^ M 대신에 개행을 원했다. 구출하는 펄 :

Perl -pi.bak -e 's/\x0d/\n/g' Excel_created.txt

또는 stdout에 쓰기 :

Perl -p -e 's/\x0d/\n/g' < Excel_created.txt
0
user3379574