如何正确运行find |与grep +转义字符平行吗?

问题描述 投票:0回答:1

我在一个文件夹中大约有1500个2GB文件,并希望基于正则表达式从其中提取行。我尝试过:

find . -regex "filename pattern" -exec grep -P "pattern1\t|pattern2\t|pattern3\t|...|patternN\t" {} +

效果很好,但是速度很慢。然后,我读到有关在GNU grep上运行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一起使用转义字符?

regex grep gnu-parallel
1个回答
0
投票

作为@Mark Setchell,我错过了“ --quote”参数!此解决方案有效:

© www.soinside.com 2019 - 2024. All rights reserved.