모든 파일을 반복하고 각 파일의 시작 부분에 있는 개행 문자를 바꾸는 스크립트를 작성 중입니다. 그러한 파일의 경우,
\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을 나타냅니다.