限制perl中的for循环
Limiting a for loop in perl
我有一点 perl,它通过管道接收数据 运行
... | perl -0 -wnE 'say for /\d+/g'
打印从管道之前传递的每个数值。我将如何更改此语法以便仅打印找到的最后十个?
您可以通过 tail
unix 命令对其进行管道传输以仅显示最后 10 个数字:
... | perl -0 -wnE 'say for /\d+/g' | tail -10
... | perl -M5.010 -ne'say for /\d+/g' | tail -10
... | perl -nle'print for /\d+/g' | tail -10
仅限 Perl:
... | perl -M5.010 -ne'push @n, /\d+/g; splice(@n, 0, -10); END { say for @n }'
... | perl -nle'push @n, /\d+/g; splice(@n, 0, -10); END { print for @n }'
备注:
-E
不向前兼容,这意味着升级 Perl 可能会破坏程序。它应该只用于一次性代码。替换为 -M5.010 -e
.
-0
是试图吞噬输入文件。那不是它的作用。 -0777
应该用于此。但是没有理由在这里吞噬输入文件。
我有一点 perl,它通过管道接收数据 运行
... | perl -0 -wnE 'say for /\d+/g'
打印从管道之前传递的每个数值。我将如何更改此语法以便仅打印找到的最后十个?
您可以通过 tail
unix 命令对其进行管道传输以仅显示最后 10 个数字:
... | perl -0 -wnE 'say for /\d+/g' | tail -10
... | perl -M5.010 -ne'say for /\d+/g' | tail -10
... | perl -nle'print for /\d+/g' | tail -10
仅限 Perl:
... | perl -M5.010 -ne'push @n, /\d+/g; splice(@n, 0, -10); END { say for @n }'
... | perl -nle'push @n, /\d+/g; splice(@n, 0, -10); END { print for @n }'
备注:
-E
不向前兼容,这意味着升级 Perl 可能会破坏程序。它应该只用于一次性代码。替换为-M5.010 -e
.-0
是试图吞噬输入文件。那不是它的作用。-0777
应该用于此。但是没有理由在这里吞噬输入文件。