簡體   English   中英

如何將Bash Shell命令的輸出逐行傳遞給Perl進行Regex處理?

[英]How to pipe Bash Shell command's output line by line to Perl for Regex processing?

我有一些Bash Shell命令的輸出數據。 輸出以“\\ n”或“\\ 0”逐行分隔。 我想知道有沒有辦法將輸出傳遞到Perl並在Perl中逐行處理數據(就像將輸出匯總到awk一樣,但在我的情況下它是在Perl上下文中。)。 我想命令可能是這樣的:

Bash Shell command | perl -e 'some perl commands' | another Bash Shell command

假設我想在“逐行”的基礎上將所有“:”字符替換為“@”字符(不是全局替換,我可以使用條件,例如奇數或偶數行來確定當前行是否應該具有替代與否。),那么我怎么能實現這一點。

perlrun

perl -lpe's/:/@/g'      # assumes \n as input record separator
perl -0 -lpe's/:/@/g'   # assumes \0 as input record separator

perl -lne'if (0 == $. % 2) { s/:/@/g; print; }' # modify and print even lines

是的,Perl可能出現在管道中的任何地方,就像awk一樣。

命令行開關-p(如果你想自動打印)或-n(如果你不想要它)將做你想要的。 行內容在$ _中:

perl -pe's/\\./\\@/g'

將是一個解決方案。 通常,您希望閱讀“<>”(鑽石)運算符,這是非oneliner的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM