You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用grep提取以(开头、含指定子串、以)结尾的字符串

使用grep提取指定格式的子字符串

没问题,这事儿用grep就能轻松搞定,核心是搭配正确的正则表达式和选项,精准提取你要的子串(而非整行内容)。下面给你一步步讲清楚:

核心命令结构

假设你要找的指定子串是target(替换成你实际需要的内容即可),命令如下:

grep -oP '\([^)]*target[^)]*\)' 你的文件名.txt

各部分解释

  • -o:这是关键选项,让grep只输出匹配到的子串,而不是整行内容
  • -P:启用Perl兼容正则表达式(PCRE),让我们能更灵活地编写匹配规则
  • \(:匹配开头的(字符(因为(在正则里是特殊符号,必须转义才能匹配原字符)
  • [^)]*:匹配任意数量的非)字符,这能避免意外匹配到多个()包裹的内容(比如不会把(abc)(def)当成一个整体)
  • target:替换成你需要找的指定子串就行
  • \):匹配结尾的)字符(同样需要转义)

实际例子

比如你有个文件data.txt,内容是:

今天的任务:(完成报告的foo部分),还有(检查bar模块),另外(foo相关的测试用例)也要搞定

如果要提取包含foo的()包裹内容,运行命令:

grep -oP '\([^)]*foo[^)]*\)' data.txt

输出结果会是:

(完成报告的foo部分)
(foo相关的测试用例)

额外小技巧

  • 如果需要忽略大小写匹配指定子串,加上-i选项:
    grep -ioP '\([^)]*FOO[^)]*\)' data.txt
    
    这样不管是FOO、foo还是Foo都能匹配到
  • 如果要从管道输入读取内容(比如配合cat、curl等命令),直接把命令接在管道后面就行:
    cat data.txt | grep -oP '\([^)]*foo[^)]*\)'
    

内容的提问来源于stack exchange,提问作者Gag Baghdasaryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:06:13