Grep:重复运算符操作数在 GNU 并行调用中无效

Grep:重复运算符操作数在 GNU 并行调用中无效

我正在使用 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

相关内容