gpt4 book ai didi

linux - 使用正则表达式进行 grep 搜索

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:34:26 25 4
gpt4 key购买 nike

如何使用 grep 找到恰好包含 3 个“w”、5 个“t”且没有“v”的行?

Input:
----------
aabbccddd4444
wccwwtttjjttuu
zzxxxwwwmmmnnnn

Expected output:
----------------
wccwwtttjjttuu

因为在“wccwwtttjjttuu”中我们有 3 个“w”、5 个“t”而没有“v”

谢谢!

最佳答案

$ cat ip.txt 
aabbccddd4444
wccwwtttjjttuu
wvccwwtttjjttuu
zzxxxwwwmmmnnnn
ccwwtttjjttuu


使用 grep,使用扩展正则表达式和 -x 选项只匹配整行

$ grep -xE '([^w]*w){3}[^w]*' ip.txt | grep -xE '([^t]*t){5}[^t]*' | grep -v 'v'
wccwwtttjjttuu


使用 awk,不确定哪个版本支持 {3} 正则表达式构造。我在 GNU awk 4.1.3

上测试过
$ awk '/^([^w]*w){3}[^w]*$/ && /^([^t]*t){5}[^t]*$/ && !/v/' ip.txt 
wccwwtttjjttuu


使用 perl

$ perl -ne '(@w)=/w/g; (@t)=/t/g; (@v)=/v/g; print if $#w==2 && $#t==4 && $#v==-1' ip.txt 
wccwwtttjjttuu
  • @w, @t, @v 数组分别包含所有w, t, v字符
  • $#w 给出了 @w 中最后一个元素的索引,所以它的值是元素个数减一

关于linux - 使用正则表达式进行 grep 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40187643/

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