명령을 사용하여 원하는 페이지부터 인쇄를 시작할 /var/log/messages
수 있도록 파일의 페이지 수를 세고 싶습니다 .pr
예를 들어 파일에 300페이지가 포함되어 있다고 가정하면 /var/log/messages
다음 명령을 사용하여 마지막 5페이지를 인쇄할 수 있습니다.
pr +295 /var/log/messages
참고: pr
파일에서 사용 가능한 페이지 수를 초과하는 페이지 번호를 지정하면 명령은 아래 설명된 대로 페이지 번호를 나열합니다.
pr +400 /var/log/messages
pr: starting page number 400 exceeds page count 313
그런데 페이지 번호를 찾는 특별한 명령어가 있는지 알고 싶습니다.
답변1
pr
텍스트 파일의 기본 페이지 길이는 입니다 56
. 그래서 당신은 이것을 할 수 있습니다 :
$ perl -MPOSIX=ceil -nle 'END{print ceil($./56)}' file
많은 파일 수를 계산하려면 다음을 시도해 보세요.
$ perl -MPOSIX=ceil -nle '
if (eof) {
print ceil($./56);
close ARGV;
}
' file1 file2 file3
답변2
pr
나는 출력 자체에서 이 정보를 추출하기 위해 매우 멋진 해킹을 만들었습니다. pr
파일에 사용하는 경우 기본적으로 각 페이지에 양식 페이지 번호가 포함된 헤더가 출력됩니다.
2014-07-04 11:40 file.txt Page 1
따라서 pr
파일을 실행하고 출력에서 마지막 헤더를 추출한 다음 해당 헤더에서 페이지 번호를 추출할 수 있습니다.
예를 들어 다음 명령 중 하나를 사용합니다.
pr file.txt | awk '/file.txt\s+Page/{ print $5; }' | tail -n1
또는
pr file.txt | awk '/file.txt/ && /Page/{ print $5; }' | tail -n1
필요한 정보를 얻으실 수 있습니다.
예:
> pr grapher.cpp | awk '/file.txt .* Page/'
2014-07-04 11:40 file.txt Page 1
2014-07-04 11:40 file.txt Page 2
> pr file.txt | awk '/file.txt\s+Page/{ print $5; }' | tail -n1
2
이 방법의 장점 중 하나는 옵션을 통해 행과 열의 수를 조정 pr
하면서도 올바른 결과를 얻을 수 있다는 것입니다. 유일한 문제는 일부 옵션이 출력에서 헤더를 제거한다는 것입니다.