我正在使用 OSX 中的 GNU 并行包创建一个要并行调用的函数。该函数是这样的:
parallel_func() {
(cat $1) | grep -ioE "($first$second$third+$fourth)"
}
export -f parallel_func
parallel doit ::: $Files_To_Parse
当我调用此函数时,我收到错误:“grep:重复运算符操作数无效”
但是,当我使用 for 循环顺序执行 grep 语句时,它会按预期工作:
for file in $Files_To_Parse; do
(cat $file) | grep -ioE "($first$second$third+$fourth)"
done
谁能向我解释这是为什么以及如何修复并行函数而不引发错误?
谢谢。
答案1
这对我有用。从技术上讲,如果您愿意,您可以将其替换(cat "$1") |
为。< "$1"
Files_To_Parse=myfile
seq 10000000 > $Files_To_Parse
first=1
second=2
third=3
fourth=4
export first
export second
export third
export fourth
parallel_func() {
(cat "$1") | grep -ioE "($first$second$third+$fourth)"
}
export -f parallel_func
parallel parallel_func ::: $Files_To_Parse