Извлечь значения из объекта JSON стандартными утилитами - PullRequest
0 голосов
/ 17 июня 2020

У меня есть текстовый файл, и его содержимое выглядит следующим образом. Я пытаюсь оставить только значение вроде 12, rachel. howell@reqres.in и удалить скобки, кавычки, запятую и ключ. Может ли кто-нибудь помочь мне в том, что я пропускаю или go не так с моей командной строкой? Спасибо!

{
"id": 12,
"email": "rachel.howell@reqres.in",
"first_name": "Rachel",
"last_name": "Howell",
"avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/hebertialmeida/128.jpg",
}

Теперь результат, который я могу вывести, таков:

{
    12,
    "rachel.howell@reqres.in",
    "Rachel",
    "Howell",
    "https://s3.amazonaws.com/uifaces/faces/twitter/hebertialmeida/128.jpg",
 }

Я ожидал:

12
rachel.howell@reqres.in
Rachel
Howell
https://s3.amazonaws.com/uifaces/faces/twitter/hebertialmeida/128.jpg

Вот моя команда:

sed -e 's/[{]//g' | cut -d':' -f '2' test.txt

Ответы [ 2 ]

2 голосов
/ 17 июня 2020

С это будет:

jq -r '.[]' file
0 голосов
/ 17 июня 2020

Если вы хотите использовать только sed cut и grep, я бы порекомендовал вам следующее:

sed "s/}//g;s/{//g;s/\"//g;s/,//g;s/\ //g" test.txt | cut -d":" -f2 | egrep "..*"

Но есть более удобный способ.

-

EDIT: описание команды:

sed "s /} // g; s / {// g; s / \" // g; s /, // g; s / \ // g "

-> удаляет {} ",

cut -d": "-f2

-> принимает только вторую часть

egrep" .. * "

-> принимает только строки, содержащие что-то

...