2015-12-21 40 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'