【问题标题】:How to print file content in parts to the screen?如何将文件内容部分打印到屏幕上?
【发布时间】:2013-05-08 05:40:12
【问题描述】:

我正在尝试将命令输出存储到一个文件中(效果很好),然后我想要做的就是将文件内容显示到屏幕上。 我的问题是我希望它分部分显示(例如一次 20 行)并让用户按[Enter] 或任何键继续下一部分。我正在考虑将文件内容通过管道传输到more,但它会一次显示整个文件内容,而不是逐个显示。

这是我负责打开文件,写入文件,然后在屏幕上显示的部分代码。

open FILE, '>', $filename;
print FILE @command;

open FILE, '<', $filename;
while (<FILE>) {
    open MORE, '| more';
    print MORE;
}
close MORE;
close FILE;

【问题讨论】:

  • 如果您已经将输出存储在@command 中,只需一次打印 20 行即可。无需阅读您刚刚写的FILE。还是我误会了什么?
  • 我省略了将 ps 存储到“@command”的第一部分代码,然后我创建了一个文件并将“@command”的结果写入其中。如何一次显示 20 行?

标签: linux perl shell io


【解决方案1】:
use strict;
use warnings;

my @command = map "output line $_\n", 1..100;

my $page_size = 20;
my $n = 0;

for my $line (@command) {
    print $line;
    $n ++;
    if ($n % $page_size == 0) {
        print "--More--";
        <>;
    }
}

【讨论】:

    【解决方案2】:

    您只需将open more 置于循环之外:

    close FILE;
    open FILE, '<', $filename;
    open MORE, '| more';
    while (<FILE>) {
        print MORE;
    }
    close MORE;
    close FILE;
    

    或不使用更多:

    open my $file, '<', $filename or die("$!");
    while (@command) {
        print join("\n", splice(@command, 0, 20));
        <>; 
    }
    close $file;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-06
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多