从正则表达式中提取组

亚当11

我是使用regex的新手,在理解如何从正则表达式中提取组时遇到了一些问题。我有一个文本文件(example.txt):

libstuff-example1 (>= 6.3.2),
libpackage-example2 (>= 5.2.1),
libtest-example3 (>= 5.2.1)

我试图仅从libpackage行中提取“ 5.2.1”,并将其放入bash脚本的变量中。我尝试做

cat example.txt | grep -oP "libpackage-[a-z- (>=]+(.*)[)],"

但这给了我整行而不是“ 5.2.1”部分。如何从该行中提取第一组,这样我只能得到“ 5.2.1”?

维克多·史翠比维

您可以使用

val=$(grep -Po 'libpackage-.* \K[0-9.]+' example.txt)

详细资料

  • -Po-启用PCRE正则表达式引擎(P),并仅输出匹配项(带有o
  • libpackage-.* \K[0-9.]+-match libpackage-,然后是任何文本,一个空格,然后忽略所有匹配的文本,然后匹配并返回一个或多个数字或点。

观看在线演示

s='libstuff-example1 (>= 6.3.2),
libpackage-example2 (>= 5.2.1),
libtest-example3 (>= 5.2.1)'

val=$(grep -Po 'libpackage-.* \K[0-9.]+'  <<< "$s")
echo "$val"
# => 5.2.1

GNUawk方式:

val=$(awk -F'[ ()]+' '/^libpackage-/{print $3}' example.txt)

请参阅此在线演示

在此,-F'[ ()]+'将字段分隔符设置为一个或多个空格或括号,/^libpackage-/找到以开头的行,libpackage-{print $3}打印(“返回”)字段(列)3的值。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从多个正则表达式命名组中提取

来自分类Dev

在正则表达式匹配中提取组

来自分类Dev

使用正则表达式组从字符串中提取值

来自分类Dev

在LibreOffice Calc中提取正则表达式的命名组

来自分类Dev

在Java中使用正则表达式从URL的字符串组中提取数字

来自分类Dev

用于从网页中提取 HTML 标签组的正则表达式

来自分类Dev

正则表达式从js代码中提取地址

来自分类Dev

从正则表达式中提取数据

来自分类Dev

使用正则表达式从网页中提取表格

来自分类Dev

正则表达式-从网址中提取数字

来自分类Dev

从正则表达式中提取值:c#

来自分类Dev

正则表达式从行中提取IP地址

来自分类Dev

JMeter:从数组响应中提取正则表达式

来自分类Dev

在通用Lisp中提取正则表达式匹配

来自分类Dev

从正则表达式中提取文本?

来自分类Dev

正则表达式如何从括号中提取单词

来自分类Dev

正则表达式从插入查询中提取值

来自分类Dev

在正则表达式PHP中提取链接

来自分类Dev

正则表达式//从<a>链接中提取值

来自分类Dev

Javascript正则表达式在括号中提取

来自分类Dev

正则表达式从文件中提取哈希

来自分类Dev

正则表达式从方括号中提取?

来自分类Dev

在php中提取正则表达式

来自分类Dev

正则表达式从URL中提取类别

来自分类Dev

在PySpark中提取几个正则表达式匹配

来自分类Dev

正则表达式从URL中提取链接

来自分类Dev

正则表达式从文本中提取日期

来自分类Dev

使用正则表达式从文本中提取帮助

来自分类Dev

使用正则表达式从网址中提取日期