Discussion:
[shell-script] Substituição de Processos dentro do xargs
Alfredo Casanova atcasanova@gmail.com [shell-script]
2016-12-26 12:32:35 UTC
Permalink
Galera, to tentando paralelizar um monte de processos de OCR usando xargs,
mas tÎ apanhando porque a linha a ser executada tem uma substituição de
processos. Não consegui identificar porque nao funciona

O input é uma lista de strings em hexadecimal que, convertidas com o xxd,
passam a ser arquivos jpg que envio pro tesseract-ocr ler.

o que eu esperava que funcionasse é o seguinte:
$ cat hexa | xargs -n1 -P5 "tesseract <(xxd -r -p <<< {}) stdout"

Pesquisei bastante no google e não consegui achar alguém com o mesmo
problema. Alguma luz?
phfbettega@yahoo.com.br [shell-script]
2016-12-26 13:17:52 UTC
Permalink
Olá Alfredo, não sei se funciona com substituição de processos, mas com subshell
eu passo a linha como argumento pro bash.

echo arq.jpg|xargs -I{} bash -c 'echo mv "{}" $(sed "s/jpg/foo/" <<<"{}")'
mv arq.jpg arq.foo

Abraços Paulo
Galera, to tentando paralelizar um monte de processos de OCR usando xargs, mas tÃŽ apanhando porque a linha a
ser executada tem uma substituição de processos. Não consegui identificar porque nao funciona
O input é uma lista de strings em hexadecimal que, convertidas com o xxd, passam a ser arquivos jpg que envio
pro tesseract-ocr ler.
$ cat hexa | xargs -n1 -P5 "tesseract <(xxd -r -p <<< {}) stdout"
Pesquisei bastante no google e não consegui achar alguém com o mesmo problema. Alguma luz?
--------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
Alfredo Casanova atcasanova@gmail.com [shell-script]
2016-12-26 13:36:04 UTC
Permalink
Acho que está funcionando, Paulo. Mas o xargs não tá aguentando o tamanho
da linha de argumentos.
Será que consigo com o GNU parallel?
Post by ***@yahoo.com.br [shell-script]
Olá Alfredo, não sei se funciona com substituição de processos, mas com
subshell
eu passo a linha como argumento pro bash.
echo arq.jpg|xargs -I{} bash -c 'echo mv "{}" $(sed "s/jpg/foo/" <<<"{}")'
mv arq.jpg arq.foo
Abraços Paulo
Post by Alfredo Casanova ***@gmail.com [shell-script]
Galera, to tentando paralelizar um monte de processos de OCR usando
xargs, mas tÃŽ apanhando porque a linha a
Post by Alfredo Casanova ***@gmail.com [shell-script]
ser executada tem uma substituição de processos. Não consegui
identificar porque nao funciona
Post by Alfredo Casanova ***@gmail.com [shell-script]
O input é uma lista de strings em hexadecimal que, convertidas com o
xxd, passam a ser arquivos jpg que envio
Post by Alfredo Casanova ***@gmail.com [shell-script]
pro tesseract-ocr ler.
$ cat hexa | xargs -n1 -P5 "tesseract <(xxd -r -p <<< {}) stdout"
Pesquisei bastante no google e não consegui achar alguém com o mesmo
problema. Alguma luz?
Post by Alfredo Casanova ***@gmail.com [shell-script]
----------------------------------------------------------
----------------------------------------------------------
Alfredo Casanova atcasanova@gmail.com [shell-script]
2016-12-26 14:04:26 UTC
Permalink
Sobre a limitação, pra quem se interessar:

http://www.in-ulm.de/~mascheck/various/argmax/
Post by Alfredo Casanova ***@gmail.com [shell-script]
Acho que está funcionando, Paulo. Mas o xargs não tá aguentando o tamanho
da linha de argumentos.
Será que consigo com o GNU parallel?
Olá Alfredo, não sei se funciona com substituição de processos, mas com
subshell
eu passo a linha como argumento pro bash.
echo arq.jpg|xargs -I{} bash -c 'echo mv "{}" $(sed "s/jpg/foo/" <<<"{}")'
mv arq.jpg arq.foo
Abraços Paulo
Post by Alfredo Casanova ***@gmail.com [shell-script]
Galera, to tentando paralelizar um monte de processos de OCR usando
xargs, mas tÃŽ apanhando porque a linha a
Post by Alfredo Casanova ***@gmail.com [shell-script]
ser executada tem uma substituição de processos. Não consegui
identificar porque nao funciona
Post by Alfredo Casanova ***@gmail.com [shell-script]
O input é uma lista de strings em hexadecimal que, convertidas com o
xxd, passam a ser arquivos jpg que envio
Post by Alfredo Casanova ***@gmail.com [shell-script]
pro tesseract-ocr ler.
$ cat hexa | xargs -n1 -P5 "tesseract <(xxd -r -p <<< {}) stdout"
Pesquisei bastante no google e não consegui achar alguém com o mesmo
problema. Alguma luz?
Post by Alfredo Casanova ***@gmail.com [shell-script]
----------------------------------------------------------
----------------------------------------------------------
Alfredo Casanova atcasanova@gmail.com [shell-script]
2016-12-26 14:12:18 UTC
Permalink
http://www.cs.utah.edu/~bigler/code/code.html

mais literatura a respeito
Post by Alfredo Casanova ***@gmail.com [shell-script]
http://www.in-ulm.de/~mascheck/various/argmax/
Acho que está funcionando, Paulo. Mas o xargs não tá aguentando o tamanho
da linha de argumentos.
Será que consigo com o GNU parallel?
Olá Alfredo, não sei se funciona com substituição de processos, mas com
subshell
eu passo a linha como argumento pro bash.
echo arq.jpg|xargs -I{} bash -c 'echo mv "{}" $(sed "s/jpg/foo/" <<<"{}")'
mv arq.jpg arq.foo
Abraços Paulo
Post by Alfredo Casanova ***@gmail.com [shell-script]
Galera, to tentando paralelizar um monte de processos de OCR usando
xargs, mas tÃŽ apanhando porque a linha a
Post by Alfredo Casanova ***@gmail.com [shell-script]
ser executada tem uma substituição de processos. Não consegui
identificar porque nao funciona
Post by Alfredo Casanova ***@gmail.com [shell-script]
O input é uma lista de strings em hexadecimal que, convertidas com o
xxd, passam a ser arquivos jpg que envio
Post by Alfredo Casanova ***@gmail.com [shell-script]
pro tesseract-ocr ler.
$ cat hexa | xargs -n1 -P5 "tesseract <(xxd -r -p <<< {}) stdout"
Pesquisei bastante no google e não consegui achar alguém com o mesmo
problema. Alguma luz?
Post by Alfredo Casanova ***@gmail.com [shell-script]
----------------------------------------------------------
----------------------------------------------------------
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2016-12-26 17:40:30 UTC
Permalink
Fala Alfredo,
Vc já deu uma olhada no cmd coproc que surgiu no bash 4.0?

Abcs,
Julio

*​Damos treinamento em sua empresa por *
*um preço, no mínimo, 50% mais barato que qualquer curso,*
*com certificado e nota fiscal.*

​​
Nosso time de instrutores *in company* é formado somente por
​
​
autores
​ ​
​
de
*Best Sellers​ ​*​laureados ​sobre os temas. P. exemplo:

*Shell* básico e Programação em *Shell* Julio Neves
*Bacula* Heitor Medrado
*Zabbix* Adail Host
Post by Alfredo Casanova ***@gmail.com [shell-script]
http://www.cs.utah.edu/~bigler/code/code.html
mais literatura a respeito
Post by Alfredo Casanova ***@gmail.com [shell-script]
http://www.in-ulm.de/~mascheck/various/argmax/
Acho que está funcionando, Paulo. Mas o xargs não tá aguentando o tamanho
da linha de argumentos.
Será que consigo com o GNU parallel?
Olá Alfredo, não sei se funciona com substituição de processos, mas com
subshell
eu passo a linha como argumento pro bash.
echo arq.jpg|xargs -I{} bash -c 'echo mv "{}" $(sed "s/jpg/foo/" <<<"{}")'
mv arq.jpg arq.foo
Abraços Paulo
Post by Alfredo Casanova ***@gmail.com [shell-script]
Galera, to tentando paralelizar um monte de processos de OCR usando
xargs, mas tÃŽ apanhando porque a linha a
Post by Alfredo Casanova ***@gmail.com [shell-script]
ser executada tem uma substituição de processos. Não consegui
identificar porque nao funciona
Post by Alfredo Casanova ***@gmail.com [shell-script]
O input é uma lista de strings em hexadecimal que, convertidas com o
xxd, passam a ser arquivos jpg que envio
Post by Alfredo Casanova ***@gmail.com [shell-script]
pro tesseract-ocr ler.
$ cat hexa | xargs -n1 -P5 "tesseract <(xxd -r -p <<< {}) stdout"
Pesquisei bastante no google e não consegui achar alguém com o mesmo
problema. Alguma luz?
Post by Alfredo Casanova ***@gmail.com [shell-script]
----------------------------------------------------------
----------------------------------------------------------
Loading...