grep匹配所有出现的多个正则表达式

布拉姆

我需要从一个串联的SQL语句中提取所有主机变量。输入示例:

select * from table where :first-var || :second-var

为此,我需要提取“ first-var”和“ second-var”。

匹配一个或另一个可以使用:

grep -o -E ':\S+\s+\|\|'

匹配':first-var ||'

grep  -o -E '\|\|\s+:\S+'

匹配” || :第二变种'

但是,当我以交替模式组合这两个表达式时,仅返回一个结果:

grep -o -E '\|\|\s+:\S+|:\S+\s+\|\|'

将命令拆分为多个模式还仅匹配一个结果:

grep -o -E -e '\|\| :second-var' -e ':first-var \|\|'

怀疑在第一个匹配项后管道符号“用完了”,因为以下内容确实返回了两个结果:

grep -o -E -e '\| :second-var' -e ':first-var \|'

如何获得所有比赛?请注意,串联符号不必是输出的一部分,在此示例中,我仅对“ first-var”和“ second-var”感兴趣。

斯蒂芬·查泽拉斯(Stephane Chazelas)

问题是找到后:first-var |||| :second-var剩余的文本中就没有剩余了。grep -o只能打印不重叠的部分线。

您可以这样做:

$ perl -lne 'print for /:\S+\s+\|\|/g, /\|\|\s+:\S+/g' file
:first-var ||
|| :second-var

(所有:var ||s都印在|| :vars之前)。

或者,如果只需要:var一部分,则使用grep带有PCRE支持的GNU

$ grep -Po ':\S+(?=\s+\|\|)|\|\|\s+\K:\S+' file
:first-var
:second-var

如同:

perl -lne 'print for /:\S+(?=\s+\|\|)|\|\|\s+\K:\S+/g'

现在,如果您要提取:foo:bar在始终形状为的直线中提取,则anything :foo || :bar可以使用以下方法进行标准处理:

s='[[:space:]]\{1,\}' S='[^[:space:]]\{1,\}'
sed -n "/\(:$S\}\)$s\{1,\}||$s\(:$S\).*/{
  s//\
\1\
\2/
  s/.*\n\(.*\n\)/\1/p
}'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式匹配所有出现的段落

来自分类Dev

正则表达式匹配首次出现的所有匹配项

来自分类Dev

正则表达式可以在连字符之前匹配所有内容-多个匹配

来自分类Dev

正则表达式匹配正则表达式模式之外的所有内容

来自分类Dev

Perl一线匹配所有出现的正则表达式

来自分类Dev

什么正则表达式匹配所有出现的css url?

来自分类Dev

正则表达式匹配所有内容,直到最后一次出现/

来自分类Dev

匹配2个标签之间的所有单词出现-正则表达式

来自分类Dev

正则表达式匹配指定字符之前的所有出现

来自分类Dev

什么正则表达式匹配所有出现的css url?

来自分类Dev

正则表达式匹配所有内容,直到最后一次出现/

来自分类Dev

正则表达式匹配字符串中的所有出现

来自分类Dev

匹配所有出现的术语 R 的正则表达式函数

来自分类Dev

PHP:处理所有正则表达式匹配

来自分类Dev

生成正则表达式的所有匹配项

来自分类Dev

正则表达式以获取所有匹配的位置

来自分类Dev

正则表达式模式以匹配所有标签

来自分类Dev

查找所有正则表达式匹配项

来自分类Dev

替换所有与正则表达式匹配的事件

来自分类Dev

正则表达式返回所有匹配项

来自分类Dev

正则表达式匹配所有排列

来自分类Dev

正则表达式以获取所有匹配的位置

来自分类Dev

正则表达式模式以匹配所有标签

来自分类Dev

正则表达式匹配所有`,`而不是\ [\]

来自分类Dev

找到所有与正则表达式匹配的部分

来自分类Dev

查找所有正则表达式匹配项

来自分类Dev

正则表达式以匹配所有注释///,/ * * /

来自分类Dev

正则表达式匹配所有

来自分类Dev

正则表达式:在所有行中查找多个匹配的字符串

Related 相关文章

热门标签

归档