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

관련 정보