正则表达式提取bash shell中引号中的所有内容?

Dud*_*ude 2 regex bash shell sed

考虑这个数据文件

随机文本"txt"随机文本
随机文本"txt1"随机文本"txt2"
随机文本"txt1"
随机文本"txt3"随机文本"txt1"
随机文本"txt4"随机文本"txt1"
随机文本" txt5" 随机文本" txt1"随机文本"txt5"随机文本"txt6"随机文本

对于每一行,我需要提取引号内的所有内容,IE

txt
txt1,txt2
txt1,txt3
txt1
,txt4 txt1 ,txt5
txt1,txt5,txt6一行中
可以有多个引号.

我在shell中编写了这个正则表达式(实际上我写了一个sed命令,但是当我在这里粘贴它时,它会搞砸了.*)

^ dotStar"[^"] +"dotStar $(单号引号)
^ dotStar"[^"] +"dotStar"[^"] +"dotStar $(如果有两个引号)

如您所见,我的正则表达式取决于出现的引号数量.任何人都可以给我一个通用的注册表,无论引用的次数如何,它都会给我一些文本.

hek*_*mgl 5

您可以使用此sed命令:

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

输出:

txt
txt1,txt2
txt1,txt3
txt1,txt4
txt1,txt5
txt1,txt5,txt6
Run Code Online (Sandbox Code Playgroud)