파일 시작 부분에서 LF를 CRLF로 바꿉니다.

파일 시작 부분에서 LF를 CRLF로 바꿉니다.

모든 파일을 반복하고 각 파일의 시작 부분에 있는 개행 문자를 바꾸는 스크립트를 작성 중입니다. 그러한 파일의 경우,

\n
\n
A line \r\n
Another line \r\n
\r
\f
\n
\n
Few more lines \r\n
\r\n

파일 시작 부분의 모든 개행 문자를 CRLF로 바꿔야 합니다. 즉,

\r\n
\r\n
A line \r\n
Another line \r\n
\r
\f
\n
\n
Few more lines \r\n
\r\n

사용해 보았는데,

sed -i 's/^[\n]/\r\n/' file.txt

그러나 이것은 작동하지 않는 것 같습니다.

편집: 다양한 줄을 다음으로 바꿀 수 있습니다.

sed '1,2s/^/\r/'

하지만 파일의 첫 번째 문자가 개행 문자인지 여부를 확인하는 방법이 있습니까?

답변1

GNU sed가 있는 경우 특수 주소 형식을 사용하여 0,/./비어 있지 않은 첫 번째 줄 앞의 파일 부분만 바꿀 수 있습니다. 표시하려면:

~$ cat -e file.txt
$
$
non empty line$
non empty line$
$
$
non-empty line$
$

( $기호는 텍스트 줄의 끝을 나타냅니다. 참조 man cat);

~$ sed '0,/./ s/^$/\r/' file.txt | cat -e
^M$
^M$
non empty line$
non empty line$
$
$
non-empty line$
$

여기서 ^M문자는 삽입된 CR을 나타냅니다.

관련 정보