Ho un file CSV che contiene un elenco di 600 numeri nel seguente formato
442030580306
442030580307
Ne ho bisogno per generare il file in un file lungo come il seguente dalla lettura dei numeri sopra
"new-request-uri-user-part:442030580306": {
"query_string": {
"query": "new-request-uri-user-part:442030580306",
"analyze_wildcard": true
}
},
"new-request-uri-user-part:442030580307": {
"query_string": {
"query": "new-request-uri-user-part:442030580307",
"analyze_wildcard": true
}
},
Qualche idea sul modo migliore per raggiungere questo obiettivo?
Risposta accettata:
Quando vogliamo eventualmente ottenere un dato JSON – jq è lo strumento giusto:
numbers.csv
contenuto del file:
442030580306
442030580307
jq soluzione:
jq -s '"new-request-uri-user-part:" as $pfx | reduce [.[]|tostring][] as
$n ({}; .[($pfx + $n)] |= {"query_string": {"query": ($pfx + $n), "analyze_wildcard": true }})' numbers.csv
L'uscita:
{
"new-request-uri-user-part:442030580306": {
"query_string": {
"query": "new-request-uri-user-part:442030580306",
"analyze_wildcard": true
}
},
"new-request-uri-user-part:442030580307": {
"query_string": {
"query": "new-request-uri-user-part:442030580307",
"analyze_wildcard": true
}
}
}
-
"new-request-uri-user-part:" as $pfx
– assegnando la frase comune"new-request-uri-user-part:"
alla variabile$pfx
-
reduce [.[]|tostring][] as $n ({}; ...)
– eseguire l'operazione di riduzione sulla lista dei numeri inseriti