我对正则表达式还不太熟悉,所以如果这个问题太笼统的话,我很抱歉。
脚本:
我有一组文件,其中隔离了一个特定的模式,比如说[mainpattern]。在这个模式的每次出现中,[mainpattern]前面都有不同的[subpattern]出现,前面有一个右箭头,后面有一个点:
猫*.txt grep“主模式”
…[>][子模式1][.][主模式]…
…[>][子模式2][.][主模式]…

…[>][子模式][.][主模式]…
我基本上是在尝试生成一个输出,其中所有子模式都是唯一列出的(没有重复)。有什么想法吗?我不知道如何编写代码“从grep输出中获取前面的单词”。
非常感谢

最佳答案

您可以使用pcre样式的regex(?<=>)[^>.]*(?=[.]mainpattern)-oP选项(对于pcrePo对于输出匹配模式):

grep -oP '(?<=>)[^>.]*(?=[.]mainpattern)'

模式匹配:
(?<=>)-字符串中以>开头的位置
[^>.]*-匹配零个或多个字符(要匹配1个或多个,请使用+)而不是>.
(?=[.]mainpattern)-一个正面的展望,要求在消费(前一个)子模式之后立即出现.mainpattern

关于regex - 无法将正则表达式放在一起并列出结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40340996/

10-10 17:53