如何在 zgrep/zcat 命令中指定正则表达式?
How can I specify a regex in a zgrep/zcat command?
我想在一个单词列表中找到每个单词中至少有 3 次相同字母的单词。为了实现这一点,我做了 .*(\w).*.*.*.*
,你可以在这里测试它 http://www.regexplanet.com/advanced/java/index.html 但我不知道如何把它放在我的 zgrep
命令中。
如何在 zgrep
命令中插入此正则表达式?
一些注意事项:
- 您不需要使用
.*
匹配行的开头和结尾,因为允许部分匹配
\w
匹配 NFA 正则表达式中的字母、数字和下划线,在 POSIX 中,使用 [[:alnum:]_]
更安全
- 要在 POSIX BRE 模式中形成捕获组,请使用转义括号,
\(...\)
。
因此,使用
zgrep '\([[:alnum:]_]\).*.*.*' a.gz
或者,稍微收缩一下,因为三个连续的 .*
子模式看起来有点多余:
zgrep '\([[:alnum:]_]\)\(.*\)\{3\}' a.gz
我想在一个单词列表中找到每个单词中至少有 3 次相同字母的单词。为了实现这一点,我做了 .*(\w).*.*.*.*
,你可以在这里测试它 http://www.regexplanet.com/advanced/java/index.html 但我不知道如何把它放在我的 zgrep
命令中。
如何在 zgrep
命令中插入此正则表达式?
一些注意事项:
- 您不需要使用
.*
匹配行的开头和结尾,因为允许部分匹配 \w
匹配 NFA 正则表达式中的字母、数字和下划线,在 POSIX 中,使用[[:alnum:]_]
更安全
- 要在 POSIX BRE 模式中形成捕获组,请使用转义括号,
\(...\)
。
因此,使用
zgrep '\([[:alnum:]_]\).*.*.*' a.gz
或者,稍微收缩一下,因为三个连续的 .*
子模式看起来有点多余:
zgrep '\([[:alnum:]_]\)\(.*\)\{3\}' a.gz