GNU Parallel 使用 bash 在 Unix 中并行处理多个文件

GNU Parallel 使用 bash 在 Unix 中并行处理多个文件

我有一个 bash 脚本,用于迭代文件列表并搜索正则表达式匹配项。这是我当前代码的片段:

for file in $Files_To_Parse; do (cat $file) | grep -ioE "($Keys$Delimiters$Payload+$End_String)" | grep -v 'null' | grep -v '*' done

  • $Files_To_Parse 是空格分隔的文件名字符串

  • $Keys、$Delimiters、$Payload$ 和 End_String 是正则表达式模式。

该代码目前可以运行(运行缓慢)。

我想要并行处理多个文件,或者并行搜索正则表达式匹配的一个文件;但是,我不确定如何使用 GNU 的 Parallel 包来完成此任务。

感谢您的关注。

答案1

请注意,您的磁盘 I/O 可能会限制您:

doit() {
    (cat "$1") | grep -ioE "($Keys$Delimiters$Payload+$End_String)" | grep -v 'null' | grep -v '*'
}
export -f doit
parallel doit ::: $Files_To_Parse

考虑逐步完成本教程。你的命令行会喜欢你的:

man parallel_tutorial

相关内容