如何使用SED从字符串中提取双引号之间的所有单词
我想用一个regexp,比如如何使用SED从字符串中提取双引号之间的所有单词,sed,Sed,我想用一个regexp,比如 .*?"([^"]+).*?"/g 从字符串中提取双引号之间的所有单词。 例如: 我想得到: 1 2 6 是的,我知道我可以使用grep,但是有必要通过sed来实现它。没有BRE或ERE可以实现您想要的功能,因此不能通过sed在一个regexp中实现。如果可以接受,您可以在sed中执行此操作: $ sed -E 's/^[^"]*"|"[^"]*$//g; s/"[^"]+"/ /g; s/ +/ /g' file 1 2 6 当前正则表达式有什么问题?sed
.*?"([^"]+).*?"/g
从字符串中提取双引号之间的所有单词。
例如:
是的,我知道我可以使用grep,但是有必要通过sed来实现它。没有BRE或ERE可以实现您想要的功能,因此不能通过sed在一个regexp中实现。如果可以接受,您可以在sed中执行此操作:
$ sed -E 's/^[^"]*"|"[^"]*$//g; s/"[^"]+"/ /g; s/ +/ /g' file
1 2 6
当前正则表达式有什么问题?
sed
默认情况下使用基本正则表达式,其中+
是文本,一些风格支持使用-r
或-E
启用扩展正则表达式,将+
视为元字符。请尝试“\([^”]*\)“
。在许多Linux版本上,paren通常需要转义。@andlrc。您也可以经常使用\+
来表示元字符。没有sed,就没有grep。使用支持XML的工具。