Pat*_*rik 1 grep regular-expression ack
我需要匹配这个: (tt\d{1,10}) 在一个文件中以 txt 结尾。
我试过 grep 和 ack-grep 但没有结果。
ack-grep -G \.txt$ -g "(tt\d{1,10})"
Run Code Online (Sandbox Code Playgroud)
与ack-grep,看起来你正在寻找
ack-grep -uhoG '\.txt$' 'tt\d{1,10}'
Run Code Online (Sandbox Code Playgroud)
这或多或少相当于find您“最终得到”的命令,顺便说一下,它可以优化为:
find . -name '*.txt' -exec grep -Eo 'tt[0-9]{1,10}' {} +
Run Code Online (Sandbox Code Playgroud)
避免grep每个 txt 文件运行一个命令。
您可能还需要考虑添加 a-type f以避免必须在目录或符号链接或设备中搜索文本......(尽管我同意它们很少(符号链接除外)具有*.txt名称)。
另请注意,该-o选项grep是特定于GNU 的,GNU grep 还可以-r选择递归搜索目录,但请注意,旧版本的 GNU grep 会下降到目录的符号链接,因此find如果您没有最近grep。
| 归档时间: |
|
| 查看次数: |
516 次 |
| 最近记录: |