Filtre o nome de usuário aleatório após a string

0

Eu tenho uma lista completa do status da API com muitas informações como essa. Preciso usar o nome do usuário para que eu possa enviá-lo para outro arquivo ou variável.

Por exemplo:

[{"id":"1onyc4b1otgmtrmw37h83rjs9w","create_at":1542718790947,"update_at":1542728017634,"delete_at":0,"username":"ivan.ivanov","auth_data":"".

Eu preciso de grep a string depois de "username": No final, ter apenas ivan.ivanov ou qualquer que seja o nome.

    
por Denis Hristov 21.11.2018 / 15:31

2 respostas

1

Se esta fosse uma string json adequada, você poderia analisá-la com jq :

your_api_call | jq -r '.[]["username"]'

ou

jq -r '.[]["username"]' file

Mas a string que você forneceu não é adequada. Está faltando os colchetes de fechamento ( ]} ) no final e tem um . .

jq deve estar disponível na maioria dos gerenciadores de pacotes, por exemplo, instale-o com:

sudo apt install jq

Se, de alguma forma, precisar usar grep e ter pgrep / grep -P disponível:

grep -Po '"username":"\K[^"]*'
    
por 21.11.2018 / 15:44
0

Eu usei o seguinte comando e funcionou bem:

echo "[{"id":"1onyc4b1otgmtrmw37h83rjs9w","create_at":1542718790947,"update_at":1542728017634,"delete_at":0,"username":"ivan.ivanov","auth_data":""." |
  sed "s/,/\n/g" |
  awk -F ":" '/username/{print $NF}'

saída

ivan.ivanov
    
por 21.11.2018 / 16:35

Tags