Grep: operando operador de repetição inválido na chamada GNU Parallel

0

Eu estou criando uma função para ser chamada em paralelo usando o pacote paralelo do GNU no OSX. A função é como tal:

parallel_func() {
    (cat $1) | grep -ioE "($first$second$third+$fourth)"
}
export -f parallel_func
parallel doit ::: $Files_To_Parse

Quando eu chamo esta função, recebo o erro: "grep: operando operador de repetição inválido"

No entanto, quando executo a instrução grep seqüencialmente com um loop for, ela funciona como esperado:

for file in $Files_To_Parse; do
    (cat $file) | grep -ioE "($first$second$third+$fourth)"
done

Alguém pode me explicar por que isso é e como consertar a função paralela para não lançar um erro?

Obrigado.

    
por swilliz 06.07.2017 / 20:33

1 resposta

0

Isso funciona para mim. Tecnicamente, você pode substituir o (cat "$1") | por < "$1" , se quiser.

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
    
por 07.07.2017 / 13:04