我对正则表达式还不太熟悉,所以如果这个问题太笼统的话,我很抱歉。
脚本:
我有一组文件,其中隔离了一个特定的模式,比如说[mainpattern]。在这个模式的每次出现中,[mainpattern]前面都有不同的[subpattern]出现,前面有一个右箭头,后面有一个点:
猫*.txt grep“主模式”
…[>][子模式1][.][主模式]…
…[>][子模式2][.][主模式]…
…
…[>][子模式][.][主模式]…
我基本上是在尝试生成一个输出,其中所有子模式都是唯一列出的(没有重复)。有什么想法吗?我不知道如何编写代码“从grep输出中获取前面的单词”。
非常感谢
最佳答案
您可以使用pcre样式的regex(?<=>)[^>.]*(?=[.]mainpattern)
和-oP
选项(对于pcreP
和o
对于输出匹配模式):
grep -oP '(?<=>)[^>.]*(?=[.]mainpattern)'
模式匹配:
(?<=>)
-字符串中以>
开头的位置[^>.]*
-匹配零个或多个字符(要匹配1个或多个,请使用+
)而不是>
和.
(?=[.]mainpattern)
-一个正面的展望,要求在消费(前一个)子模式之后立即出现.
和mainpattern
。关于regex - 无法将正则表达式放在一起并列出结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40340996/