파일의 마지막 줄에서 n번째 줄을 가져옵니다.

파일의 마지막 줄에서 n번째 줄을 가져옵니다.

줄이 많은 파일이 있고 마지막 n번째 줄(특히 아래쪽에서 95번째 줄)이 필요합니다. 이 작업을 계속하려면 어떻게 해야 합니까? 한 가지 방법은 tail을 사용하는 것이지만 마지막부터 마지막 ​​95까지 모든 것을 인쇄하므로 95번째만 필요합니다.

답변1

지적했듯이 tail파일에서 마지막 95줄을 가져오는 데 사용할 수 있습니다. 이들 중 첫 번째만 필요하며 이를 위해 호출되는 유틸리티가 있습니다 head. 그래서

tail -95 file | head -1

사용하는 것이 tail아마도 당신이 할 수 있는 최선의 방법일 것입니다.

또 다른 접근 방식은 라인을 라인 배열로 읽어 파일 끝에 도달하면 n-95 라인을 인쇄하는 것입니다. 실제로 모든 행을 저장할 필요는 없으므로 읽은 마지막 95개 행을 저장하기 위해 95개 요소의 순환 버퍼를 가질 수 있습니다.

답변2

@icarus의 답변이 문제를 해결할 수 있지만 다른 옵션을 추가하면 됩니다.

tac file | sed -n 95p

tac파일이 역방향으로 인쇄되고 sed -n 95p95행이 인쇄됩니다. 파일이 거꾸로 인쇄되기 때문에 맨 아래부터 95번째 줄이 표시됩니다.

고쳐 쓰다

@icarus가 댓글에서 언급했듯이:

단점은 단지 95줄이 아닌 전체 파일이 파이프된다는 것입니다. 95행을 인쇄한 후 sed에게 명시적으로 종료하라고 지시하면 이러한 단점이 제거됩니다.

따라서 95행을 인쇄한 후 종료되는 업데이트된 명령은 다음과 같습니다.

tac file | sed -n '95{p; q}'

관련 정보