gpt4 book ai didi

linux - 使用正则表达式用 grep 删除点数

转载 作者:太空宇宙 更新时间:2023-11-04 10:05:33 26 4
gpt4 key购买 nike

如何删除包含超过 5 个“.”的行或少于 5 个点(简单地说:每行 5 个点?我如何编写一个正则表达式来使用 grep 在 bash 中检测它?

输入:

yGEtfWYBCBKtvxTbHxMK,126.221.42.321.0.147.30,10,Bad stuff is happening,http://mystuff.com/file.json
yGEtfWYBCBKtvxTbHxwK,126.221.42.21,10,Bad stuff is happening,http://mystuff.com/file.json

预期输出:

yGEtfWYBCBKtvxTbHxwK,176.221.42.21,10,Bad stuff is happening,http://mystuff.com/file.json

尝试过:

grep -P '[.]{5}' stuff.txt
grep -P '[\.]{5}' stuff.txt
grep -P '([\.]{5})' stuff.txt
grep -P '\.{5}' stuff.txt
grep -E '([\.]{5}' stuff.txt

最佳答案

您可以只显示恰好包含 5 个点的行,如下所示:

grep '^[^.]*\.[^.]*\.[^.]*\.[^.]*\.[^.]*\.[^.]*$' stuff.txt

或者如果你想分解它:

grep -E '^([^.]*\.){5}[^.]*$' stuff.txt

在第二个中使用 -ERE 有助于避免转义 \(\)\{\},在第一个中,grep 的默认 BRE regex 风格就足够了。

^$ 是 anchor ,分别代表行的开始和结束,确保我们匹配整行,而不仅仅是包含 5 个点的部分.

[^.] 是一个否定字符类,它将匹配除点以外的任何字符。
它们用 * 进行量化,以便每个点之间可以出现任意数量的非点字符(如果不应匹配连续的点,您可能希望将其更改为 + ).

\. 匹配文字点(而不是字符类之外的元字符 . 匹配的任何字符)。

关于linux - 使用正则表达式用 grep 删除点数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52838560/

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