簡體   English   中英

bash中的Perl oneliner:從復雜的regexp打印匹配項

[英]Perl oneliner in bash: print matches from complex regexp

我有這個復雜的正則表達式

/"_outV":([0-9]+),"_inV":([0-9]+),"_label":"([a-z\/]+)",/

我需要解析一個文件(全部在一行上),然后僅輸出匹配的組,例如

print $1 $2 $3

目前只差一點工作 onliner是

perl -pe 'while(m/"_outV":([0-9]+)\,"_inV":([0-9]+)\,"_label":"([a-z\/]+)\"\,/g){print "$1 $2 $3\n";}' 

但是最終在匹配之后,它還會在最后回顯整個文件。 我該如何解決?

我雖然刪除了-p選項可以解決問題,但事實並非如此。

對我來說看上去很好。 您需要將-p 替換-n這就是原因

一些要點:

  • 無需反斜杠那些,"
  • 您可以方便地將[0-9]替換為\\d
  • 通過為正則表達式使用其他定界符,您將不需要轉義/

最終結果優化

perl -ne 'print "$1 $2 $3\n" while m{"_outV":(\d+),"_inV":(\d+),"_label":"([a-z/]+)",}g'

暫無
暫無

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

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