Vários argumentos usando xargs.

5

Eu sei que os xargs podem aceitar muitos argumentos assim.

xargs -n5 -I{} echo {}

mas como eu coloco os argumentos em um determinado local que eu quero fazer algo assim.

xargs -n5 -I{} curl www.google.com/{1}/testing/{2}/{3}/works/{5}

Como algo assim pode ser alcançado?

    
por Sten Kin 08.01.2015 / 19:01

3 respostas

5

Eu não acho que você possa fazer isso diretamente com xargs . Use read como Costas sugere ou faça:

xargs -n5 sh -c 'curl "http://www.google.com/${1}/testing/${2}/${3}/works/${5}"' curl-command

Ou crie o URL e passe-o para xargs :

awk '{printf "http://www.google.com/%s/testing/%s/%s/works/%s\n", $1, $2, $3, $5}' | \
  xargs -L1 curl 
    
por 08.01.2015 / 21:32
3

Você quase pensaria que inventou a sintaxe do GNU Parallel:

... | parallel -N5 curl www.google.com/{1}/testing/{2}/{3}/works/{5}

Você obtém o benefício adicional de estar executando um curl por CPU.

O GNU Parallel é um paralelizador geral e facilita a execução de trabalhos em paralelo na mesma máquina ou em várias máquinas para as quais você tem acesso ssh.

Se você tem 32 tarefas diferentes que você quer rodar em 4 CPUs, uma forma direta de paralelizar é rodar 8 tarefas em cada processador:

O

GNUParallelgeraumnovoprocessoquandoumtermina-mantendoasCPUsativaseeconomizandotempo:

Instalação

Se o GNU Parallel não for empacotado para sua distribuição, você poderá fazer uma instalação pessoal, que não requer acesso root. Isso pode ser feito em 10 segundos ao fazer isso:

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

Para outras opções de instalação, consulte o link

Saiba mais

Veja mais exemplos: link

Assista aos vídeos de introdução: link

Percorra o tutorial: link

Inscreva-se na lista de e-mail para obter suporte: link

    
por 11.05.2015 / 20:19
1

system() função de awk pode ser usada para isso.

$ awk '{system("curl -v www.google.com/"$1"/testing/"$2"/"$3"/works/"$4)}' file.txt

Aqui file.txt contém os argumentos para o comando curl .

    
por 09.01.2015 / 08:51

Tags