파일의 마지막 줄을 제거해도 작동하지 않나요? [복사]

파일의 마지막 줄을 제거해도 작동하지 않나요? [복사]

bash 스크립트로 생성된 TXT 파일이 있는데 마지막에 파일의 마지막 빈 줄을 제거하고 싶습니다.

head --lines=-1 r3.txt > r4.txt

sed '$d' r3.txt > r4.txt

cat r3.txt | head -n -1  > r4.txt

r4.txt에는 여전히 마지막 빈 줄이 있습니다...

저는 Linux CentOS 6.x 서버를 사용하고 있습니다.

이것이 줄 끝(unix x windows)과 관련이 있습니까?

어떤 단서가 있나요?

답변1

어쩌면 끝에 빈 줄이 없을 수도 있습니다.

Unix 텍스트 파일은 줄로 구성되며, 각 줄은 개행 문자( '\n', ^J, 0x0a)로 끝납니다. 즉, 개행 문자는 줄 구분자가 아니라 줄 종결자입니다. 이는 특히 마지막 줄에 해당되므로 전체 파일에 해당됩니다.

예를 들어 텍스트 파일에는 다음이 포함됩니다.

abc
def

다음 명령으로 보면 다음과 같습니다 xxd.

0000000: 6162 630a 6465 660a                      abc.def.

0a마지막 싱글을 선명하게 볼 수 있습니다. 반면에, 끝에 빈 줄이 하나 더 있으면 다음과 같은 결과가 나옵니다.

0000000: 6162 630a 6465 660a 0a                   abc.def..

지금은 있으니 참고하세요 0a바이트.

wc -l행 수를 계산 하는 데 사용되는 것을 볼 수도 있습니다 . 첫 번째 파일에서는 2, 두 번째 파일에서는 3. 또한 마지막 개행 문자가 누락된 경우(대부분의 도구에서 처리할 수 있지만 파일이 실제로 유효한 텍스트 파일이 아님을 의미함) wc한 줄만 계산됩니다.

관련 정보