Como encontrar uma chave particular e substituir o valor no shell script?

0

Eu tenho um arquivo JSON com o seguinte texto

{"category": "yyy", "id": "xxxyyy", "environment": "fff", "client": "000000", "user": "Alex", "log_time": "xxx", "source_context": null}

Eu preciso encontrar a chave user nesse arquivo e substituir seu valor Alex por XXXX exatamente com o mesmo tamanho ( Alex = XXXX , Tom = XXX ). Eu tentei com o comando sed , mas não consegui acertar.

    
por user2181698 19.10.2018 / 11:46

1 resposta

3

Você não deve analisar dados JSON com analisador orientado por texto como sed . Em vez disso, use um analisador com JSON como jq .

Se esta ferramenta estiver disponível no seu sistema, você pode fazer o seguinte:

 jq '.user |= gsub(".";"X")' file

Isso substitui toda a string da chave user pelo mesmo número de X caracteres.

Se o seu jq não for compatível com gsub , você poderá usar algo assim:

jq '.user |= ([range(0;length)]|.[]="X"|add)' file
    
por 19.10.2018 / 12:04

Tags