각 개행 문자 앞에 캐리지 리턴을 추가하는 방법은 무엇입니까?

각 개행 문자 앞에 캐리지 리턴을 추가하는 방법은 무엇입니까?

새 줄에서만 작동하는 파일이 있는데 모든 새 줄에서 작동하려면 \n이 파일이 필요합니다 . \r\n어떻게 해야 하나요?

예를 들어 Vim을 사용하여 이 문제를 해결했지만 :%s/\n/\r\n/g스크립트나 명령줄 응용 프로그램을 사용하고 싶습니다. 어떤 제안이 있으십니까?

sedor 를 사용하여 this 을 찾으려고 했지만 grep이스케이프 시퀀스 해결 방법에 즉시 혼란스러워졌습니다(저는 이 명령을 처음 접했습니다).

관심이 있으시면 이 애플리케이션이 내 질문/답변과 관련되어 있습니다.여기

답변1

당신은 그것을 사용할 수 있습니다UNIX2DOS(데비안에서 발견):

unix2dos file

이 구현은 CR모든 s 앞에 a를 삽입 하지 않고 아직 1이 앞에 오지 않은 s LF만 삽입 하며 바이너리 파일(0x0 -> 0x1f 범위의 바이트 값을 포함하는 파일, 제외)을 건너뜁니다. , , 또는 ).LFCRLFFFTABCR

또는 다음을 사용하십시오 sed.

CR=$(printf '\r')
sed "s/\$/$CR/" file

또는 다음을 사용하십시오 awk.

awk '{printf "%s\r\n", $0}' file

또는:

awk -v ORS='\r\n' 1 file

또는 다음을 사용하십시오 perl.

perl -pe 's|\n|\r\n|' file

답변2

이것이 바로unix2dos하다:

$ unix2dos file.txt

file.txt이는 CRLF 줄 끝이 있는 버전으로 대체됩니다 .

이렇게 하려면 sed각 줄 끝에 캐리지 리턴을 삽입하면 됩니다.

sed -e 's/$/\r/' file.txt

이는 (s) 줄 끝 부분 앞의 크기가 0인 영역($) 그리고 \r. 내부 교체(예: unix2dos이 작업)를 수행하려면 sed -i.bak비표준 확장임에도 불구하고 사용하세요. 해당 확장이 없으면 임시 파일을 사용하세요.

답변3

Unix 시스템(OS X, Linux)에서 변환하는 경우 vi다음 파일을 사용하거나 엽니다 vim.

$ vim my-file

ESC 키를 눌러 삽입 모드가 아닌지 확인한 다음 다음을 입력하세요.

:set ff=dos

또는

:set fileformat=dos

이는 적절한 변환을 위한 파일 형식을 설정합니다.

파일에 쓰고 편집기를 종료하려면 다음을 사용하십시오.

:wq

명령줄에서 할 수 있는 일

$ vi +':w ++ff=dos' +':q' my-file

답변4

이식 가능한 쉘 함수는 다음을 수행할 수 있습니다.

u2dos() (set -f; IFS='
'; printf '%s\r\n' $(cat "$1"))

그래서 당신은 이것을 할 수 있습니다 :

u2dos file >dosfile

관련 정보