打破具有系统命令的长行的最佳方法

时间:2017-08-03 04:42:44

标签: perl

打破包含正在执行的系统命令的长行的最佳方法是什么? `"

示例:

my @data = `cat data.txt | perl -ne '/CTX:|ed-as-of time:\\s+(\\w+)\\s+[Feb|Mar|April|May]/ && print' | sed '\$!N;/Sync/P;D'|sed 'N;s/\\n/ /'`;

我尝试使用" `&#34。如下所示,但是收到错误(sh:1:语法错误:文件结束意外:)。

my @data = `cat data.txt | `.
            `perl -ne '/CTX:|ed-as-of time:\\s+(\\w+)\\s+[Feb|Mar|April|May]/ && print' | sed '\$!N;/Sync/P;D'|sed 'N;s/\\n/ /'`;

1 个答案:

答案 0 :(得分:4)

最好的方法是在标量变量中组装命令

$cmd = "command1 --foo --bar | command2 2>log.err | "
     . " command3 --are-we-done-yet | ...";
@data = `$cmd`;  # or @data = qx($cmd)

或将其组合为readpipe

的参数
@data = readpipe("command1 --foo --bar | command2 >log.err | "
                 . "command3 --are-we-done-yet | ...");