jsonjq

Printing multiple values on the same line


I'm trying to parse a JSON document and print a couple of values on the same line. Is there a way to take this document:

{
  "fmep": {
    "foo": 112,
    "bar": 234324,
    "cat": 21343423
  }
}

And print:

112 234324

I get the values I want but they are printed on separate lines:

$ echo '{ "fmep": { "foo": 112, "bar": 234324, "cat": 21343423 } }' | jq '.fmep|.foo,.bar'

112  
234324

Solution

  • The easiest way in your example is to use String Interpolation along with the -r option. e.g.

    echo '{ "fmep": { "foo": 112, "bar": 234324, "cat": 21343423 } }' | \
    jq -r '.fmep| "\(.foo) \(.bar)"'
    

    produces

    112 234324
    

    You may also want to consider putting the values in an array and using @tsv e.g.

    echo '{ "fmep": { "foo": 112, "bar": 234324, "cat": 21343423 } }' | \
    jq -r '.fmep | [.foo, .bar] | @tsv'
    

    which produces tab-separated

    112 234324