regex - 如何正确运行 find | 与 grep + 转义字符平行?
问题描述
我在一个文件夹中有大约 1500 个 2GB 文件,并且想根据正则表达式从中提取行。我试过:
find . -regex "filename pattern" -exec grep -P "pattern1\t|pattern2\t|pattern3\t|...|patternN\t" {} +
效果很好,但速度很慢。然后,我阅读了有关grep
使用 GNU运行的信息parallel
,但不知道如何正确使用它。这是我尝试过的:
find . -regex "filename pattern" | parallel grep -P "pattern1\t|pattern2\t|pattern3\t|...|patternN\t" {}
以及此命令的一些变体。但是,我得到了回报:
/bin/bash: pattern1t: command not found
/bin/bash: pattern3t: command not found
/bin/bash: pattern2t: command not found
...
似乎问题出在\t
我用来确保匹配 TSV 文件列中的整个字符串的问题上。没有并行的grep
命令与这个正则表达式完美配合。
如何在grep
正则表达式中使用转义字符parallel
?
解决方案
正如@Mark Setchell 指出的那样,我错过了“--quote”论点!此解决方案有效:
find . -regex "filename pattern" -print0 | parallel -0 --quote grep -P "pattern1\t|pattern2\t|pattern3\t|...|patternN\t"
推荐阅读
- javascript - 如何访问在全局范围内的包装函数中声明的变量?
- python - 试图在元素中找到提交按钮
- c++ - 检查 istreambuf_iterator 失败
- git - 无法将 git-lfs 文件上传到 gitlab:从端点获取 404 错误
- haskell - 如何使用自定义数据类型定义实例 Monad Writer
- symfony - 如果我在 $translator->trans(); 中使用常量,是否可以使用 cli 命令构建翻译?
- node.js - 如何使用节点后端构建一个使用 react 构建的独立桌面应用程序,并将前端和后端都包装在电子中作为桌面应用程序?
- mysql - 将点击的元素移到第一个
- javascript - 如何通过值从对象中获取键?
- sql - 允许插入重复项的合并语句