Eu tenho esse Json
{
"users": [
{
"first": "Stevie",
"last": "Wonder"
},
{
"first": "Michael",
"last": "Jackson"
}
]
}
Usando jq, eu gostaria de exibir o nome e o sobrenome em série. Igual a -
Stevie Wonder
Michael Jackson
Foi assim que cheguei -
jq '.users[].first, .users[].last'
Mas mostra
"Stevie"
"Michael"
"Wonder"
"Jackson"
Observe o seguinte -
- As aspas duplas que eu não quero.
- O retorno de carro que eu não quero.
- Está confuso. Minha consulta exibe todos os primeiros nomes primeiro e depois todos os sobrenomes. No entanto, quero o primeiro-último, primeiro-último par.
Você pode usar a adição para concatenar seqüências de caracteres.
O acima funciona quando ambos
first
elast
são string. Se você estiver extraindo tipos de dados diferentes (número e string), precisamos converter para tipos equivalentes. Referindo-se à solução nesta questão . Por exemplo.fonte
" "
a um número. A resposta de Eric fornece um resultado melhor para este caso.(.numA|tostring) + " " + (.numB|tostring)
deve funcionar. Ou string uso de interpolação em vez disso:"\(.numA) \(.numB)"
.jq '.users[] | .first + " " + .last'
isso, funcionou muito bem, mas causou uma nova linha entre o valor de.first
e.last
. Mudei o" "
para"@"
e depois fiz umsed 's/@/ /g'
na saída para obter "John Smith" como saída. Algo como isto:jq '.users[] | .first + "@" + .last' | sed 's/@/ /g'
fonte
Embora ambas as respostas acima funcionem bem se key, value são strings, tive uma situação para anexar uma string e um número inteiro (erros jq usando as expressões acima)
Requisito: Para criar um URL abaixo json
Solução:
fonte
\(...)
é interpolação de string. Aqui ele transforma numérico.ServicePort
em string. A interpolação pode ser usada no lugar dos+
sinais para diminuir esta solução.Isso produzirá uma variedade de nomes
fonte
Cheguei bem perto do que eu queria, fazendo algo assim
A saída está perto o suficiente do yaml para eu geralmente importá-lo para outras ferramentas sem muito problema. (Ainda estou procurando uma maneira de exportar um subconjunto da entrada json)
fonte
minha abordagem será (seu exemplo de json não está bem formado .. acho que é apenas uma amostra)
retorna algo como isto
e grep a saída com expressão regular.
fonte