Perl - 将输入管道读取为单个变量

时间:2015-12-21 23:07:33

标签: regex perl

我有一个非常简单的perl脚本,我对使用管道传送到perl命令的数据的值执行了一些正则表达式。例如:

 cat /tmp/myfile.txt | perl -wnE"say for /my_pattern/gi"

注意,我确实在我当前的设置中发现-n选项包含了我的命令:

while(<>){
    say for /my_pattern/gi
}

...因此迭代每一行输入。

我想改变这一点,我可以针对cat命令的最终输出执行正则表达式。我找到的所有示例都显示逐行处理输入。

任何帮助都将不胜感激。

更新:

要说清楚,我指的是任何管道,不仅仅是在我的示例中读取文件(想想curlwgetecho等等。 。)我不确定它是否可能,因为原始命令可能是长寿命的,或者是为了无限期地运行。一段时间。

1 个答案:

答案 0 :(得分:1)

直接回答您的问题:

cat aaaa.txt | perl -ne 'BEGIN{local $/};print for /a/gi'

为了得到你的东西:

cat aaaa.txt | perl -ne ';print if /aaaa/gi'