首页 > 解决方案 > 带有输入块的 awk / perl 调用命令

问题描述

我有一个称为processor.sh处理标准输入的脚本。它处理一行行,如下所示:

address: abc
phone: 123
user: def

考虑到我有以下文件:

address: a1
phone: p1
user: u1

address: a2
phone: p2
user: u2

address: a3
phone: p3
user: u3

我想processor.sh多次调用,每个块一次,并将文本块按原样提供给它的标准输入。

我知道这可以通过使用类似这样的东西拆分成临时文件来完成。我希望避免创建临时文件,即仅使用管道。

是否有一种简短的(即可以合理地称为单线)的方法来做到这一点?

标签: perlawk

解决方案


perl -MIPC::Run=run -00ne'run [ "processor.sh" ], "<", \$_'

或者,如果您希望删除尾随行:

perl -MIPC::Run=run -00nle'run [ "processor.sh" ], "<", \"$_\n"'

推荐阅读