【问题标题】:How to use zgrep and regular expression?如何使用 zgrep 和正则表达式?
【发布时间】:2025-12-09 10:10:01
【问题描述】:

我正在尝试在 .gz 文件中进行一些研究,所以我发现我应该使用 zcat / zgrep 现在经过一些研究我无法弄清楚如何将正则表达式与 zgrep 一起使用

我尝试这样做zgrep '[\s\S]{10,}' a.gz,但即使文件中有至少 10 个字符的字符串,也没有任何结果。

那么我如何使用zgrep 来显示最少10 个字符的字符串?

【问题讨论】:

  • 您不应在 POSIX BRE 正则表达式括号表达式中使用 \S\s。使用. 而不是[\s\S]。此外,在 BRE 模式中,{10,} 看起来像 \{10,\}。所以,试试zgrep '.\{10,\}' a.gz
  • 即使zgrep '.{10,}' a.gz 也没有任何结果
  • {10,} 将不起作用,因为它匹配 {10,} 字符串。
  • 那我该怎么做呢?
  • 查看我的*评论:所以,试试zgrep '.\{10,\}' a.gz

标签: regex linux zcat zgrep


【解决方案1】:

您不应在 POSIX BRE 正则表达式括号表达式中使用 \S\s,因为 [\S\s] 括号表达式匹配 \Ss。使用 . 而不是 [\s\S] 将任何字符与 POSIX BRE/ERE 正则表达式匹配。

此外,在 BRE 模式中,{10,} 必须写为 \{10,\},否则,当未转义时,{10,} 匹配文字 {10,} 字符串。

使用

zgrep '.\{10,\}' a.gz

【讨论】: