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

おすすめ記事