저는 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