선적 서류 비치POSIX 테일옵션은 -n
다음을 나타냅니다.
계산 원점은 1입니다. 즉, -n +1은 파일의 첫 번째 줄을 나타내고 -n -1은 마지막 줄을 나타냅니다.
따라서 tail -n 10
(나중에 같은 페이지에서 사용됨) tail -n -10
마지막 10줄을 인쇄하고 tail -n +10
처음 9줄을 건너뛰고 나머지 줄을 모두 인쇄해야 합니다.
선적 서류 비치POSIX 헤더옵션은 -n
다음을 나타냅니다.
애플리케이션에서는 숫자 옵션 인수가 양의 십진 정수인지 확인해야 합니다.
따라서 sum의 값이 단순 정수가 아니라 쉘에서 특별한 의미가 없는 문자열이고 마지막 N번째 줄까지 모든 줄을 인쇄할 수 없기 head -n -10
때문에 sum은 POSIX와 호환되지 않습니다 . head -n +10
왜 차이가 있나요?-10
+10
PS: head -n +10
GNU coreutils와 함께 사용됩니다.
답변1
찾고 있는 기능을 구현할 가치가 있다고 생각하는 사람은 아무도 없기 때문에 이를 요청할 구문이 없습니다.
어떻게 구현해야 하는지 생각해 보세요. 먼저 파일의 끝을 찾아 뒤로 스캔하여 마지막에서 N번째 줄이 시작되는 위치를 찾아 해당 위치를 기록하고 처음으로 돌아가서 원하는 위치에 도달할 때까지 줄을 인쇄해야 합니다. 기억하다. 이것은 평소보다 더 복잡합니다 head
. (또는 전체 파일을 메모리로 읽어서 마지막 N 줄을 제거하고 나머지 줄을 인쇄할 수도 있습니다.) 하지만 더 중요한 것은 검색할 수 없는 스트림에서는 작동하지 않는다는 것입니다.
반면에 tail
의 기능은 구현하기가 매우 간단합니다. N개 이상의 행을 저장할 필요는 없습니다(이 -n -N
경우). 이 -n +N
경우 인쇄를 시작하기 전에 건너뛸 줄 수만 계산하면 됩니다.