使用GNU parallel执行一系列greps?

时间:2017-09-26 14:18:54

标签: bash parallel-processing grep gnu-parallel

我有以下grep s

字符串
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,但我不清楚如何执行grep这个链使用parallel

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

1 个答案:

答案 0 :(得分:2)

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

但是,如果你有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