All Articles

Newline Character

Newline, EOL(End-Of-Line), Line Feed, Line Break

Newline/EOL/Line Feed/Line Break은 모두 같은 말이다. line의 끝과 새 line의 시작을 나타내는데, OS마다 다른 캐릭터를 쓴다.

  • \n (ASCII 0x0A) Line Feed(LF) - Unix and Unix-like systems(Linux, macOS, FreeBSD)
  • \r (ASCII 0x0D) Carriage Return(CR)
  • \r\n (ASCII 0x0D0A) CRLF - Microsoft Windows

이처럼 Newline 캐릭터가 여러 종류가 있으니 텍스트 데이터를 정제할 때 빼먹지 말고 꼼꼼히 처리해주어야한다.

라인과 파일 끝에 Newline character을 넣어야 하는 이유

라인과 파일 끝을 제대로 인식하기 위해서다. POSIX에서는 Line을 다음과 같이 정의한다.

A sequence of zero or more non- characters plus a terminating character.

git을 사용할 때 파일 끝에 newline을 추가해주지 않으면 git diff시 \ No newline at end of file 문구가 뜬다. 이걸 무시하고 커밋하면 git이 파일의 마지막 줄을 인식하지 못했기 때문에, 이후 같은 파일을 수정할 때 기존의 마지막 줄이 git diff에 포함된다. (꽤 성가시다!)

유닉스 계열에서 줄 수를 셀 때도 new line이 없으면 마지막 줄을 인식하지 못한다.

$ echo "hello" > text.txt
$ xxd text.txt
00000000: 6865 6c6c 6f0a                           hello
$ wc -l text.txt
       1 text.txt

# -n option: Do not output the trailing newline.
$ echo -n "hello" > text.txt 
$ xxd text.txt
00000000: 6865 6c6c 6f                             hello
$ wc -l text.txt
       0 text.txt