gpt4 book ai didi

regex - 查找具有特定字母数的字符串,grep 包含的扩展

转载 作者:行者123 更新时间:2023-11-29 09:13:53 25 4
gpt4 key购买 nike

如果我将 ls 传递给 grep,我将如何返回一个文件列表,条件是它们只有 x 个字母,包括扩展名?

例如,如果 ls 给我:

abcde.jav a156e.exc test.c prog1.c qwert r.c 

我正在寻找严格包含 5 个字母的所有文件,包括扩展名:

a156e.exc test.c prog1.c qwert

我试过:

ls | grep '^[a-z]${5}'
ls | grep "^[a-z]|[a-z]$"

和其他类似的东西,但我似乎无法理解。看起来解决方案应该非常简单,但我无法弄清楚。任何帮助将不胜感激。

最佳答案

您可以使用以下表达式:

Live Example

^([^a-z]*[a-z][^a-z]*){5}$

解释:

  • ^ - 表示字符串开头的 anchor
  • ([^a-z]*[a-z][^a-z]*) - 匹配零个或多个非字母字符之间的单个字母的组
  • {5} - 匹配前一组 5 次
  • $ - 表示字符串结尾的 anchor 。

用法:

ls | grep -E '^([^a-z]*[a-z][^a-z]*){5}$'

或者没有ls:

for f in *; do
if [[ $f =~ ^([^a-z]*[a-z][^a-z]*){5}$ ]]
then
echo $f
fi
done

关于regex - 查找具有特定字母数的字符串,grep 包含的扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35388314/

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