2015-12-21 47 views
1

我有一个非常简单的perl脚本,它对传递给我的perl命令的数据值执行一些正则表达式。例如:Perl - 将输入管道作为单个变量读取

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

注意,我在我的当前设置意识到-n选项围绕我的命令,例如:

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

...因此遍历输入的每一行。

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

任何帮助,将不胜感激。

更新:

要清楚,我指的是任何管道,从文件中不仅读在我的例子(认为curlwgetecho,等...),我不确定甚至可能,因为原始命令可能是长期存在的,或者运行时间不确定。

+3

参见[?什么是啜文件到Perl中的字符串的最佳方式(HTTP ://stackoverflow.com/questions/206661/what-is-the-best-way-to-slurp-a-file-into-a-string-in-perl) –

+0

@HåkonHægland,请参阅我的更新。感谢您的意见,但不幸的是,我不是在寻找什么。 –

+0

*“我可以对我的猫命令的最终输出执行正则表达式”*我不确定这意味着什么。你的意思是管道数据的最后一行吗? – Borodin

回答

1

直接回答你的问题:

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

要得到你的东西的工作:

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