使用 GNU parallel 执行一系列 greps?

Use GNU parallel to execute a series of greps?

我有以下 greps

的字符串
grep -E '[0-9]{3}\.[0-9]+ ms' file.log | grep -v "Cycle Based" | grep -Ev "[0-9]{14}\.[0-9]+ ms" > pruned.log

我需要 运行 一个 10G 的日志文件。这比我愿意等待的时间要长一点,所以我尝试使用 GNU parallel,但我不清楚如何使用 parallel 执行这个 grep 链。

这不是如何执行最快的单个 grep 的问题,而是关于如何在 grep 中执行 系列 的问题并行

通常,grep 文件的限制因素是磁盘。如果您只有一个磁盘,那么这很可能会限制您。

但是,如果您有 RAID10/50/60 或分布式网络文件系统,那么并行化可能会加快您的处理速度:

doit() {
    grep -E '[0-9]{3}\.[0-9]+ ms' | grep -v "Cycle Based" | grep -Ev "[0-9]{14}\.[0-9]+ ms"
}
export -f doit
parallel --pipepart -a file.log --block -1 -k doit > pruned.log