簡體   English   中英

正則表達式提取bash shell引號中的所有內容?

[英]Regex to extract everything in the quotes in bash shell?

考慮這個數據文件

隨機文本“ txt”隨機文本
隨機文本“ txt1”隨機文本“ txt2”
隨機文本“ txt1”隨機文本“ txt3”
隨機文本“ txt1”隨機文本“ txt4”
隨機文本“ txt1”隨機文本“ txt5”
隨機文本“ txt1”隨機文本“ txt5”隨機文本“ txt6”隨機文本

對於每一行,我都需要提取引號IE中的所有內容

文本
txt1中,TXT2
txt1中,txt3
txt1中,txt4
txt1中,txt5
txt1中,txt5,txt6
一行中可以有多個引號。

我在外殼中寫了這個正則表達式(實際上我寫了一個sed命令,但是當我將其粘貼到這里時,它會擰緊。*)

^ dotStar“ [^”] +“ dotStar $(單引號)
^ dotStar“ [^”] +“ dotStar” [^“] +” dotStar $(如果有兩個引號)

如您所見,我的正則表達式取決於出現的報價數量。 任何人都可以給我一個通用的正則表達式,它與引號出現的次數無關,它給了我文本。

您可以使用以下sed命令:

sed --posix 's/[^"]*"\([^"]*\)"[^"]*/\1,/g;s/\(.*\),/\1/' input.txt

輸出:

txt
txt1,txt2
txt1,txt3
txt1,txt4
txt1,txt5
txt1,txt5,txt6

暫無
暫無

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

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