Como depurar em `jq`

Algumas dicas para usar a função `debug`


O jq vem com um filtro debug bem útil. Use-o enquanto você desenvolve as soluções dos seus exercícios para inspecionar os dados que estão no pipeline do jq no momento.

O debug imprime um "array de debug" em stderr. A saída dele é a entrada sem nenhuma alteração. O primeiro elemento do array é a string "DEBUG:". O segundo elemento depende de como você chama o debug.

  1. a função debug de aridade zero coloca uma representação compacta da entrada no array de debug:

    jq -n '[11, 22, 33] | debug | map(. * 2)'
    

    produz

     ["DEBUG:",[11,22,33]]
     [
       22,
       44,
       66
     ]
    
  2. a versão de aridade um passa a entrada pelo filtro informado:

    jq -n '[11, 22, 33] | debug("length: \(length), last: \(.[-1])") | map(. * 2)'
    
     ["DEBUG:","length: 3, last: 33"]
     [
       22,
       44,
       66
     ]
    

    O filtro não precisa ser uma string. Ele pode ser qualquer coisa, incluindo várias expressões separadas por vírgula para uma saída de debug em "várias linhas":

    jq -n '[11, 22, 33] as $a | 44 | debug("I am here:", $a, .)'
    
    ["DEBUG:","I am here:"]
    ["DEBUG:",[11,22,33]]
    ["DEBUG:",44]
    44