regex - Grep 不适用于带有数字和空格的字符串
问题描述
我正在尝试在我的文件中打印以下所有条目
show initial all#Total brb Errors Received#g1/1
show initial all#Total brb Errors Received#g0/2
show initial all#Total brb Errors Received#g0/3
show initial all#Total brb Errors Received#g4/3
由于我的字符串有一个空格,我以以下格式编写了 grep,以便获得预期的输出
grep "show initial all#Total brb Errors Received#g*/*" inputfile > output file
有什么输入吗?
解决方案
采用:
grep -E 'show initial all#Total brb Errors Received#g[[:digit:]]+/[[:digit:]]+' inputfile > output file
或者;
grep -E 'show initial all#Total brb Errors Received#g[0-9]+/[0-9]+"' inputfile > output file
该-E
方法使用“扩展正则表达式”。该+
方法查找“一个或多个”或前一个表达式,它(在两种情况下)都是匹配单个数字的正则表达式(字符类)。
请注意,如果您只想匹配单个数字,则省略+
(在每个正则表达式中两次),并且该-E
选项变得不必要(正则表达式在有和没有该-E
选项的情况下都一样)。
在参数周围使用单引号而不是双引号通常更安全,尤其是正则表达式参数。有例外(例如当您需要获取包含在正则表达式中的 shell 变量的值时),但尽可能使用单引号。
推荐阅读
- unit-testing - 如何在 kotlin 中测试方法返回的类型?
- list - 使用 Kotlin,基类如何从具有派生类对象列表的派生类中对基类对象列表进行操作?
- javascript - 通过 Java Script 表单编辑 URL
- gitlab - 仅在特定日期运行触发的 Gitlab 作业
- node.js - Amazon DynamoDB 查询基于 user_id 而不是哈希获取记录 - 键
- wagtail - 在 Wagtail 中以编程方式生成嵌套的流块内容
- jetty - 使用“deploy”模块重新部署时,DataSource 已经存在
- java - 是否可以在 Spring Boot 安全性中将对象从请求体传递到 .access 方法?
- python - 我如何为我的机器人创建一个只能由 discord 上的某个角色使用的命令(在 replit python 上)
- scala - 单元测试中的 Spark Dataframe 比较以检查功能