본문 바로가기
카테고리 없음

Windows 줄바꿈(개행문자) Linux 줄바꿈 변환 처리

by 쿡노트 2025. 4. 10.
반응형

Windows에서 생성한 파일을 DB로 로딩하려고 할 때, 아래와 같은 에러가 발생했다.
'Invalid numeric format '0' for column 18'

파일을 열어봤을 때, 숫자형식인데, 위의 오류가 발생했고, 대부분 줄 마지막의 숫자 타입 데이터에 대한 오류였다.
원인이 발생한 이유는, DB로딩 구문에, 줄 바꿈 옵션을 \n (Linux)로 처리해서 이고, 로딩하려는 파일의 줄 바꿈 형식은 \r\n (Windows)이었다.

 

줄 바꿈 방식 CR, LF 란

  • \r : CR (Carriage Return) 16진수 - 0d
  • \n : LF (Line feed) 16진수 - 0a

OS별 줄 바꿈(개행문자)

  • DOS(Windows) : \r\n **CR+LF방식
  • UNIX 또는 Linux : \n **LF 방식
  • Mac : \r

줄 바꿈(개행문자) 확인

1. (Windows) EditPlus(문서편집기) 사용 : 편집 > Hex 뷰어

예시) 간단하게 두줄 작성된 파일 text.txt

test1,0,0

test2,1,0

 

Hex 뷰어 확인 (첫 번째와 두 번째 줄 사이에 점 두 개가 - 줄 바꿈 문자 16진수 0D OA로 표현되어 있다. ** 리눅스 줄 바꿈 문자인 경우 0A)

줄바꿈 변환 전 (EditPlus)

2. (Linux) vi 편집기 확인

$ vi -b test.txt

** -b Binary mode

Vi 편집기를 바이너리 모드에서 열었을 때, 줄 끝에 '^M'이 있으면, 줄 바꿈이, Windows 형식인 '\r\n'으로 되어 있는 것으로 확인하면 된다. (Hex 뷰어로 확인한 16진수 = OD OA)

줄바꿈 변환 전(Linux vi)

줄 바꿈(개행문자) Windows -> Linux 변경 (Linux에서 변경)

1. $ dos2unix 파일명.txt

#dos2unix가 설치 안되어 있으면 설치 
$ yum install dos2unix
$ dos2unix test.txt
dos2unix: converting file test.txt to Unix format ...

2. Linux vi 편집기로 변환 처리

$ vi -b test.txt

$ vi -b text.txt
#^M은 Ctrl+v+m 으로 입력한다.
#모든 라인 끝에 ^M (=\r)을 없앤다.
:%s/^M//g

줄바꿈 변환 후 (EditPlus)
줄바꿈 변환 후(Linux vi)

 

리눅스 서버가 존재하면 리눅스 서버에서 변환해도 되고, 
윈도우 cmd에 리눅스 환경을 실행할 수 있는 wsl이 설치되어 있다면, wsl로 접속 후 동일하게 vi 편집기를 활용해도 된다.

반응형