regex - sed 不是模式匹配
问题描述
我有一个包含这些文件的目录:
abc12345abc
abc1234567abc
abc123456789abc
我想获取其中包含 7 个数字的文件。我需要通过管道使用 sed 来做到这一点。我认为这会起作用:
ls -l | sed -n '/[0-9]\{7\}/p'
它返回:
abc1234567abc
abc123456789abc
解决方案
正则表达式没有锚定。abc123456789abc
有一串正好 7 位数字,其中 3 位实际上是:1234567
、2345678
和3456789
. 如果您想要不再匹配的文件名,则需要检查前后的非数字。
sed -n '/[^0-9][0-9]{7}[^0-9]/p'
推荐阅读
- elasticsearch - 使用 docker compose 为弹性搜索 7.1 配置 kafka 连接接收器
- c - 函数输入上的 C 静态变量
- javascript - 将 window.require 与 Electron 和 TypeScript 与 create-react-app 一起使用时缺少输入
- c# - 在 C# windows 服务中为图像构建操作
- java - 如何在 Java 中将分数方程计算为分数?
- python - 什么时候调用上下文处理器?
- assembly - MOVQ/PINSRQ 与 VMOV 填充 XMM(一个有效,另一个无效)
- java - while 循环中的 Java if 语句不起作用
- python - 将 NumPy 数组作为参数传递给 numba.cfunc
- c# - Bootstrap 4 工具提示样式仅适用于第一部分