cria texto lendo dados de um arquivo

3

Eu tenho um arquivo csv que tem uma lista de 600 números no seguinte formato

442030580306

442030580307

Eu preciso que ele envie o arquivo em um arquivo longo como o abaixo, lendo os números acima

         "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
            }
          },

Alguma idéia de como melhor conseguir isso?

    
por WMK83 09.07.2017 / 20:37

2 respostas

2

Quando, eventualmente, quisermos obter um dado JSON - jq é a ferramenta certa:

numbers.csv conteúdo do arquivo:

442030580306
442030580307
Solução

jq :

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

A saída:

{
  "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 - atribuindo a expressão comum "new-request-uri-user-part:" a varible $pfx

  • reduce [.[]|tostring][] as $n ({}; ...) - executando a operação de redução na lista de números de entrada

por 09.07.2017 / 21:29
2

Simplesmente, com printf:

while read number
do
  printf '        "new-request-uri-user-part:%s": {
            "query_string": {
              "query": "new-request-uri-user-part:%s",
              "analyze_wildcard": true
            }
          },
' "$number" "$number"
done < input
    
por 09.07.2017 / 21:30

Tags