使用 GNU parallel 执行一系列 greps?
Use GNU parallel to execute a series of greps?
我有以下 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
,但我不清楚如何使用 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
我有以下 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
,但我不清楚如何使用 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