답변:
DOS2UNIX는 이 작업을 수행하는 명령 줄 유틸리티입니다, 또는 :%s/^M//g
당신이 사용하는 경우 Ctrl- v Ctrl- m입력 ^ M으로, 또는 당신은 할 수 :set ff=unix
와 정력이 당신을 위해 그것을 할 것입니다.
'fileformat'설정에 대한 문서가 여기 있으며 vim wiki에는 줄 끝 변환에 대한 포괄적 인 페이지가 있습니다 .
또는 파일을 많이 앞뒤로 이동하는 경우 파일을 변환하지 않고 대신 할 수 :set ff=dos
있으므로 vim은 DOS 파일임을 알고 줄 끝에 DOS 규칙을 사용합니다.
:%s/^M//g
해야 :%s/\r//g
하기 때문에 ^M
"라인의 시작 부분에"단지 수단 "경기 자본"M.
:%s/\r//g
은 나를 위해 일했다, @Bunyk를 건배
set ff=unix
아무것도하지 않기 때문에 뭔가를 놓치고 있어야합니다 . 파일을 변환 할 수도 있지만 모든 ^M
문자가 여전히 있습니다.
보기에서 줄 끝을 변경하십시오.
: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
:w +ff=unix
여기에 쓰여진 다른 것들보다 훨씬 좋으며 bash 스크립트는 좋은 보너스입니다.
:e
명령은 설치 VIM 내 Windows에 아무것도 나타나지 않습니다. 내보기에는 여전히 ^M
코드가 표시됩니다.
나는 일반적으로 사용
:%s/\r/\r/g
조금 이상해 보이지만 vim이 줄 바꿈과 일치하는 방식으로 작동합니다. 나는 또한 기억하기가 더 쉽다는 것을 안다 :)
:set ff=unix
이전 에는 아무런 문제가 없었지만 오늘 열린 파일은 특히 이상했습니다. Vim은 이미 fileformat=unix
있지만 모든 결말은 끝났다고 말했다 ^M
. 이 솔루션은 저에게 효과적이었습니다.
:%s/\r//g
대신 나를 위해 작동합니다.
:%s/\r//g
는 유일한 범용 솔루션입니다. 특히 DOS와 UNIX 스타일의 줄 바꿈이 이종 혼합 된 혼합 모드 파일에 적합합니다. 정식 솔루션 (예 :set ff=unix
, :e ++ff=unix
) 같은 줄 바꿈 스타일 현재 버퍼의 끝의 모든 라인을 가정합니다. 때때로 그들은한다. 때로는 그렇지 않습니다. 큐 sadface.
다음 명령을 사용하는 것이 좋습니다.
:set fileformat=unix
mac
또는 dos
파일을 각각 Macintosh 또는 MS-DOS / MS-Windows 파일 규칙으로 변환 할 수도 있습니다 . 파일이 이미 올바른 형식이면 아무 것도 수행하지 않습니다.
자세한 내용은 vim help를 참조하십시오.
:help fileformat
^M
문자가 있습니다.
set fileformat=unix
내 .vimrc 파일에 추가 했습니다.
에서 : http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix
[Esc] : % s / \ r $ //
@ https://gist.github.com/sparkida/7773170
find $(pwd) -type f -name "*.ext" | while read file; do sed -e 's/^M//g' -i "$file"; done;
또한 위에서 언급했듯이 ^ M = Ctrl+V+ Ctrl+M(캐럿 "^"기호와 M 만 입력하지 마십시오)
dos2unix
파일 내용을 직접 수정할 수 있습니다.
임시 파일 리디렉션없이 파일에서 직접 사용할 수 있습니다.
dos2unix input.txt input.txt
위의 가정은 미국 키보드를 사용합니다. -
영국 키보드를 사용하려면 437 옵션을 사용하십시오.
dos2unix -437 input.txt input.txt
tr -d '\15\32' < winfile.txt > unixfile.txt
다음 단계는 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
매우 쉬운 방법을 찾았습니다. 나노로 파일을여십시오. nano file.txt
를 눌러 CTRL+는 O저장하지만 누르기 전에 Enter눌러 : ALT+는 DDOS와 유닉스 / 리눅스 라인 엔딩 타협 전환, 또는 : ALT+는 MMac 및 유닉스 / 리눅스 라인 엔딩 타협을 누른 다음을 누릅니다 전환 Enter저장 및 CTRL+ X종료합니다.
^M
엔딩 이 생겼습니다. 유지하려면 할 일로 저장하고 제거하려면 Linux로 저장하십시오. cat -v
일반적 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}";
}
^ M 대신에 개행을 원했습니다. 구조에 펄 :
perl -pi.bak -e 's/\x0d/\n/g' excel_created.txt
또는 stdout에 쓰려면 :
perl -p -e 's/\x0d/\n/g' < excel_created.txt
hexdump -C badfile
참조0x0d 0x0a
"\r\n"
하면 문제입니다.