我有一点 perl,它通过管道获取数据并运行
... | perl -0 -wnE 'say for /\d+/g'
它打印从管道之前传递的每个数值。我将如何更改此语法以便仅打印找到的最后十个?
最佳答案
... | 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
应该用于此目的。但是没有理由在这里吞噬输入文件。
关于regex - 限制perl中的for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69739860/