GNU Paralelo para processar múltiplos arquivos em paralelo no Unix com o bash

1

Eu tenho um script bash que estou usando para percorrer uma lista de arquivos e pesquisar por correspondências regex. Aqui está um trecho do meu código atual:

for file in $Files_To_Parse; do (cat $file) | grep -ioE "($Keys$Delimiters$Payload+$End_String)" | grep -v 'null' | grep -v '*' done

  • $ Files_To_Parse é uma cadeia de nomes de arquivos separados por espaços

  • $ Keys, $ Delimiters, $ Payload $ e End_String são padrões de regex.

Este código funciona atualmente (lentamente).

Gostaria de ter vários arquivos processados em paralelo ou um arquivo em que as correspondências regex são pesquisadas em paralelo; no entanto, não tenho certeza de como usar o pacote paralelo do GNU para realizar isso.

Obrigado por procurar.

    
por swilliz 06.07.2017 / 01:50

1 resposta

0

Esteja ciente de que sua E / S de discos pode estar limitando você:

doit() {
    (cat "$1") | grep -ioE "($Keys$Delimiters$Payload+$End_String)" | grep -v 'null' | grep -v '*'
}
export -f doit
parallel doit ::: $Files_To_Parse

Considere percorrer o tutorial. Sua linha de comando vai adorar você por isso:

man parallel_tutorial
    
por 06.07.2017 / 17:56