답변:
unix2dos 를 사용할 수 있습니다 (Debian에 있음).
unix2dos file
이 구현은 삽입하지 않습니다 CR
모든 전에 LF
만 전에 LF
이미 단 하나의 앞에되지 않습니다의 CR
이진 파일을 건너 뜁니다합니다 (0x0으로의 바이트 값을 포함하는 사람들은 -> 0x1f이 이외의 범위 LF
, FF
, TAB
또는 CR
).
또는 사용 sed
:
CR=$(printf '\r')
sed "s/\$/$CR/" file
또는 사용 awk
:
awk '{printf "%s\r\n", $0}' file
또는 사용 perl
:
perl -pe 's|\n|\r\n|' file
'\r'
으로는 sed
트릭을 수행합니다.
이것은 정확히 무엇입니까 unix2dos
:
$ unix2dos file.txt
file.txt
CRLF 줄 끝이있는 버전으로 대체 됩니다.
당신이 함께하고 싶어 sed
, 당신은 모든 라인의 끝에 캐리지 리턴을 삽입 할 수 있습니다 :
sed -e 's/$/\r/' file.txt
이 대체합니다 ( s
) 라인 (의 끝나기 전에 크기가 0 인 영역 오른쪽 $
으로) \r
. 전체 교체 (예 : unix2dos
수행) 를 수행하려면 sed -i.bak
표준 확장명이 아니지만을 사용하십시오. 확장이 없으면 임시 파일을 사용하십시오.
\r
교체의 휴대용하지 않습니다. 적어도 Mac OSX에서는 작동하지 않습니다.
u2d
, ux2dos
, todos
뿐만 아니라 주위 명령.
UNIX 시스템 (OS X, 리눅스)에서 변환을 수행하는 경우와 파일 열기 vi
또는 vim
:
$ vim my-file
삽입 모드가 아닌지 확인하려면 ESC 키를 누른 다음
:set ff=dos
또는
:set fileformat=dos
파일 형식을 설정하여 변환합니다.
파일을 작성하고 편집기를 종료하려면
:wq
커맨드 라인에서 할 수있는 일
$ vi +':w ++ff=dos' +':q' my-file
POSIX로 이것을하는 것은 까다 롭습니다 :
POSIX Sed 는 \r
또는을 지원하지 않습니다 \15
. 그랬더라도 in place 옵션 -i
은 POSIX가 아닙니다.
POSIX Awk 는 \r
및을 지원 \15
하지만 -i inplace
옵션은 POSIX가 아닙니다.
d2u 및 dos2unix 는 POSIX 유틸리티 가 아니지만 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
awk에서 당신은 시도 할 수 있습니다
awk '{print $0 "\r"}'
또는
awk -v r=$'\r' '{print $0 r}'
(가) $'\r'
와 같은 몇 가지 쉘에서 지원하는 인용 ANSI-C 스타일의 예입니다 ksh93
, bash
, zsh
, mksh
FreeBSD의 및 sh
가능성은 단일 유닉스 규격의 문제 8에 포함되어야합니다 .
이상한 문자를 표현하는 일반적인 방법을 제공합니다. 예를 들면 다음과 같습니다.
awk -v r=$'\U0001F608' '{print $0 r}'
CR
하기 전에 모든 에만 이미 단 하나의 CR이 선행되지 않는 그 LFS 전에, LF.