我有以下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的系列
答案 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