как использовать Grep для сохранения значения из JSON - PullRequest
0 голосов
/ 14 мая 2018

Мне просто интересно, как сохранить is_verified: true значение только для «Имен пользователей».

{
    "users": [{
        "pk": 29394004,
        "username": "chrisbrownofficial",
        "full_name": "Kid INDIGO",
        "is_private": false,
        "is_verified": true,
        "profile_pic_url": "https://instagram.fkwi3-1.fna.fbcdn.net/vp/ef4cc2c1ff4f38a06b852b37fe63f82a/5B8BECFB/t51.2885-19/s150x150/30590388_378690675946907_2025648692966457344_n.jpg",
        "profile_pic_id": "1758771593280949227_29394004",
        "chaining_info": {
            "sources": "[3, 4, 7, 8]"
        },
        "profile_chaining_secondary_label": "Kid INDIGO"
    }, {
        "pk": 17978002,
        "username": "djkhaled",
        "full_name": "DJ KHALED",
        "is_private": false,
        "is_verified": false,
        "profile_pic_url": "https://instagram.fkwi3-1.fna.fbcdn.net/vp/eb6324512b5c034a194acb6bc7bf21de/5B7EBF5A/t51.2885-19/s150x150/28155457_527972687583107_7503145280125009920_n.jpg",
        "profile_pic_id": "1726285422685771850_17978002",
        "chaining_info": {
            "sources": "[2, 3, 4, 7, 8]"
        },
        "profile_chaining_secondary_label": "DJ KHALED"
    }, {
        "pk": 6720655,
        "username": "meekmill",
        "full_name": "Meek Mill",
        "is_private": false,
        "is_verified": true,
        "profile_pic_url": "https://instagram.fkwi3-1.fna.fbcdn.net/vp/0b7220ebde06e977de982518e5e7103b/5B9402A0/t51.2885-19/s150x150/19986196_677620155771292_1453652395958468608_a.jpg",
        "profile_pic_id": "1556078075425574845_6720655",
        "chaining_info": {
            "sources": "[2, 3, 4, 7, 8]"
        },
        "profile_chaining_secondary_label": "Meek Mill"
    }, {

Пример, сохранение ниже, потому что они получили "is_verified": true, так что собираемся сохранить имя пользователя, который получил «is_verified»: true.

chrisbrownofficial
meekmill

Попытка: grep -Po '"is_verified": true "

но с неудачной попыткой.

Я надеюсь, что кто-нибудь может мне помочь.

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Этот фрагмент кода может вам помочь:

 echo $(cat yourJsonFilePath) | tr "," "\n" | grep '"is_verified": true' -B3 | grep '"username"' | sed -r 's/"username"://' | sed -e 's/"\(.*\)"/\1/'

Идея состоит в том, чтобы заменить каждое "," на "\ n". Затем выполните поиск строки is_verified и найдите 3 строки выше. Запустив этот код, вы получите:

 chrisbrownofficial
 meekmill
0 голосов
/ 14 мая 2018

Если будут даны значения для всех свойств, как насчет

cat grep2 | grep '"is_verified": true' -B3 | grep '"username":' | sed 's/ *"username": "\(.*\)",/\1/'

Первый grep используется для поиска записей, где значение is_verified равно true. Опция -B3 также напечатает на 3 строки выше совпадающей строки. Третья строка над каждым is_verified - это поле username.

Второй grep получает все поля username, и из этого имя пользователя извлекается с помощью sed.

Вывод:

chrisbrownofficial
meekmill
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...