En Bash y zsh (y quizás otros shells), puede usar la sustitución de procesos ( Bash / zsh ) para crear un archivo sobre la marcha, y luego usarlo como entrada para el siguiente proceso en la cadena de canalización.
Por ejemplo, estaba tratando de analizar la salida JSON de cURL usando jqy less, pero recibía el Failed writing bodyerror.
# Note: this does NOT work
curl https://gitlab.com/api/v4/projects/ | jq | less
Cuando lo reescribí usando la sustitución del proceso, ¡funcionó!
# this works!
jq "" <(curl https://gitlab.com/api/v4/projects/) | less
Nota: jqusa su segundo argumento para especificar un archivo de entrada
Bono: Si usted está utilizando jqcomo yo y quiere mantener la salida coloreada en less, utilice la siguiente línea de comandos en su lugar:
jq -C "" <(curl https://gitlab.com/api/v4/projects/) | less -r
(Gracias a Kowaru por su explicación de por qué Failed writing body estaba ocurriendo. Sin embargo, su solución de usar tacdos veces no funcionó para mí. También quería encontrar una solución que escalara mejor para archivos grandes y trata de evitar los otros problemas señalados como comentarios a esa respuesta.)