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
한 줄만 계산됩니다.