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 $(如果有两个引号)
如您所见,我的正则表达式取决于出现的引号数量.任何人都可以给我一个通用的注册表,无论引用的次数如何,它都会给我一些文本.
您可以使用此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)