我有一个名为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
,每个块一次,并向其提供标准输入的文本块。
我知道可以通过使用this之类的文件分割为临时文件来完成。我希望避免创建临时文件,即仅使用管道。
是否有一种简短的方法(可以合理地称为“单线”方法)?
答案 0 :(得分:4)
perl -MIPC::Run=run -00ne'run [ "processor.sh" ], "<", \$_'
或者如果要删除尾行:
perl -MIPC::Run=run -00nle'run [ "processor.sh" ], "<", \"$_\n"'
答案 1 :(得分:3)
与awk
$ awk -v RS= '{cmd="processor.sh";
print | cmd;
close(cmd)}' file
一个优点是,只要至少有一条空行将它们分开,记录的长度就可以变化。