Grep 第一次出现到其他第一次出现之间

Grep 第一次出现到其他第一次出现之间

这是我的第一个问题!我尝试了很多 grep,仍然没有找到我想要的......

所以,我们到了。

我的 Ubuntu 机器上有很多文件,其中包含以下内容:

{"group":{"name":"Subdivision01","id":"94827-20934-23085"}*manytext*
{"group":{"name":"Department28","id":"11672-23517-87241"}*manytext*
{"group":{"name":"Division07","id":"86267-91634-22516"}*manytext*

我只想拿Subdivision01Division05Departement14(长度不同)

所以这意味着之间第一名的发生":"第一名发生"," ==>我不知道该怎么做...

感谢您的帮助 :)

答案1

一种方法是使用 Perl 兼容正则表达式,它支持环顾四周:

$ grep -oP '(?<="name":").+?(?=",)' file
Subdivision01
Department28
Division07

启用-PPCRE 支持并-o告诉grep仅打印行的匹配部分。

(?<=foo)bar是一个积极的后视bar:仅当其前面紧邻 时才会匹配foo。那么,bar(?=foo)是正数展望bar,仅当其后紧跟着 时才会匹配foo。因此,我们使用的正则表达式正在寻找a和 a.+?之间的最短字符串 ( ) 。"name":"",

相关内容