Canalize o resultado de um comando de corte para enrolar

5

Eu tenho um arquivo csv que contém 3 campos por linha.

firstname,lastname,url

Estou tentando acessar o URL por meio do seguinte pipeline:

grep theName file.csv | cut -d, -f 3

eu quero adicionar outro pipe e usar os resultados do comando cut em um comando curl da seguinte forma:

grep theName file.csv | cut -d, -f 3 | curl > result.txt

problema é, quando eu faço o acima, o comando curl lança um erro, eu assumo porque o curl não tem um argumento?

como posso usar o resultado do corte para enrolar o URL resultante? Desde já, obrigado. =)

    
por wdowling 16.11.2016 / 06:05

2 respostas

7

Alavancar substituição de comando, $() :

curl "$(grep ... | cut -d, -f 3)"

Aqui $() será substituído pelo STDOUT do comando dentro de $() , ou seja, grep ... | cut -d, -f 3 , pois isso é feito primeiro pela shell, então o comando curl seria finalmente:

curl <the_url>
    
por 16.11.2016 / 06:07
5

Outra solução sem substituição:

grep theName | cut -d, -f 3 | xargs curl > result.txt
    
por 16.11.2016 / 06:10

Tags