我有一个非常简单的perl脚本,我对使用管道传送到perl
命令的数据的值执行了一些正则表达式。例如:
cat /tmp/myfile.txt | perl -wnE"say for /my_pattern/gi"
注意,我确实在我当前的设置中发现-n
选项包含了我的命令:
while(<>){
say for /my_pattern/gi
}
...因此迭代每一行输入。
我想改变这一点,我可以针对cat
命令的最终输出执行正则表达式。我找到的所有示例都显示逐行处理输入。
任何帮助都将不胜感激。
更新:
要说清楚,我指的是任何管道,不仅仅是在我的示例中读取文件(想想curl
,wget
,echo
等等。 。)我不确定它是否可能,因为原始命令可能是长寿命的,或者是为了无限期地运行。一段时间。
答案 0 :(得分:1)
直接回答您的问题:
cat aaaa.txt | perl -ne 'BEGIN{local $/};print for /a/gi'
为了得到你的东西:
cat aaaa.txt | perl -ne ';print if /aaaa/gi'