gpt4 book ai didi

regex - 如何将仅包含一个模式实例的行与 grep 匹配?

转载 作者:行者123 更新时间:2023-12-01 10:45:02 24 4
gpt4 key购买 nike

给定一个这样的文本文件,说 phrases.txt 内容:

Hahahahahasdhfjshfjshdhfjhdf
Hahahaha!
jdsahjhshfjhfHahahaha!dhsjfhajhfjhf
Hahaha!Hahaha!
dfhjfsf
sdfjsjf Hahaha! djfhjsdfh
Ha! hdfshdfs
Ha! Ha! Ha!

什么是 bash 中合适的 grep 命令,它只输出只包含一次 laughter 的行,其中 laughter 被定义为一个字符串形式为 Hahahahahaha! 和任意多个 ha。第一个 H 总是大写,其他的不是,字符串必须以 ! 结尾。在我的示例中,egrep 命令应输出:

Hahahaha!
jdsahjhshfjhfHahahaha!dhsjfhajhfjhf
sdfjsjf Hahaha! djfhjsdfh
Ha! hdfshdfs

我想到的命令是:

egrep "(Ha(ha)*\!){1}" phrases.txt

我的命令的问题是它不仅输出只有一次笑声的台词。使用我的命令,第 4 行 (Hahaha!Hahaha!) 和第 8 行 (Ha!Ha!Ha!) 也被打印出来,这不是我想要的。

是否有仅使用 grep 的好方法?

最佳答案

那么你对管道没问题

egrep '(Ha(ha)*!)' yourfile.txt | egrep -v '(Ha(ha)*!).*(Ha(ha)*!)'

首先过滤至少一次笑声,然后过滤掉不止一次笑声的笑声。

注意:{1} 只重复前一个 block ,它不检查字符串的其余部分以坚持只有一个。所以 a{1}a 实际上是一样的。

关于regex - 如何将仅包含一个模式实例的行与 grep 匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59807179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com