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

如何用Bash的grep正则匹配文件中Audio与Subtitles间的French?

解决方法

你的grep命令失效的核心原因:默认grep是逐行匹配,正则里的.*不会匹配换行符,而你要检查的Audio到Subtitles区间是跨多行的,所以无法匹配到目标内容。

以下两种可行方案:

方案1:使用支持Perl正则的grep

用-z选项将整个文件视为单行(以空字符分割输入),搭配-P启用Perl正则,再通过(?s)让.匹配换行符:

grep -z -P 'Audio(?s).*?French.*?Subtitles' test.txt
  • -z:把文件内容当作单个字符串处理,忽略换行的分隔作用
  • (?s):Perl正则的单行模式修饰符,让.匹配包括换行在内的所有字符
  • .*?:非贪婪匹配,避免误匹配文件中更靠后的无关内容

如果命令执行后有输出,说明Audio与Subtitles之间存在French;无输出则不存在。

方案2:用awk处理多行文本

awk天生适合处理跨多行的匹配逻辑,逻辑更直观:

awk '/Audio/{flag=1} flag && /French/{found=1} /Subtitles/{if(found) print "存在French"; exit}' test.txt
  • 匹配到Audio时,开启标记flag=1
  • 在flag生效的区间内,匹配到French就标记found=1
  • 匹配到Subtitles时,检查found状态并输出结果,随后直接退出

内容的提问来源于stack exchange,提问作者Snake Eyes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 11:22:15