Wie du in `jq` debuggst

Ein paar Tipps zur Verwendung der `debug`-Funktion


jq bringt einen praktischen debug-Filter mit. Nutze ihn, während du an deinen Übungslösungen arbeitest, um die Daten zu untersuchen, die sich gerade in der jq-Pipeline befinden.

debug gibt ein „Debug-Array“ auf stderr aus. Es gibt die Eingabe unverändert aus. Das erste Element des Arrays ist der String „DEBUG:“. Das zweite Element hängt davon ab, wie du debug aufrufst.

  1. Die nullstellige debug-Funktion legt eine kompakte Darstellung der Eingabe in das Debug-Array:

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

    Ausgabe:

     ["DEBUG:",[11,22,33]]
     [
       22,
       44,
       66
     ]
    
  2. Die einstellige Version leitet die Eingabe durch den angegebenen Filter:

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

    Der Filter muss kein String sein. Er kann alles Mögliche sein, auch mehrere durch Kommas getrennte Ausdrücke für eine „mehrzeilige“ Debug-Ausgabe:

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