Como canalizar diferentemente o corpo da resposta de ondulação e a saída impressa?

1

Eu gostaria de imprimir na linha de comando alguma saída de curvatura, como os cabeçalhos http, seguidos pelo corpo da resposta processada por um programa stdin / stdout. Por exemplo:

Imprima o código de status: curl -s -w "%{http_code} \n" -o "/dev/null" http://myURL.com

E, em seguida, processe a saída com uma ferramenta de análise json: curl -s http://myURL.com | python -mjson.tool

Eu gostaria de fazer as duas coisas com um único comando, e tenho a sensação de que isso pode ser possível graças à opção -o que faz a diferença entre a saída de curl e a resposta real da consulta. O problema é que -o escreve diretamente em um arquivo. Alguém tem um hack?

    
por Antoine Lizée 25.10.2013 / 23:47

1 resposta

5

Você pode usar a substituição do processo do bash >(cmd) . Por exemplo:

curl -s -w "%{http_code}\n" -o >(ruby -ne 'printf("-%6s%s", $., $_)') http://www.example.com/

Outra possibilidade que pode atender às suas necessidades é curl -v , que enviará os cabeçalhos para stderr e o corpo para stdout. Por exemplo,

curl -v http://www.example.com/ | ruby -ne 'printf("-%6s%s", $., $_)'
    
por 26.10.2013 / 00:29

Tags