[英]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.