
コマンドを使用して目的のページから印刷を開始/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
この方法の利点の1つは、オプションを使用して行と列の数を調整pr
しながらも正しい結果が得られることです。唯一の問題は、いくつかのオプションが出力からヘッダーを削除することです。