usando jq vs grep / sed

0

Pesquisando o texto do tweet usando o seguinte padrão: e         "texto":

Eu tenho sugerido não usar grep e usar jq, mas jq parece bastante difícil para um iniciante. Eu me pergunto quais são minhas opções para procurar por um padrão como acima em um arquivo json que contém 100 informações de tweets. Aqui está um trecho do arquivo json:

 {
        "favorited": false, 
        "contributors": null, 
        "truncated": false, 
        "text": "RT @Shakti_Shetty: Hillary Clinton is killing it mad for the first time since Benghazi. \n\n#DebateNight", 
        "is_quote_status": false, 
        "in_reply_to_status_id": null, 
        "user": {
            "follow_request_sent": false, 
            "has_extended_profile": false, 
            "profile_use_background_image": true, 
            "time_zone": null, 
            "id": 1082649110, 
            "description": "words are who someone wants to be..\nACTIONS are who they truly are. if you want peace in life please don't assume don't over-think & be a nonjudgemental person", 
            "default_profile": true, 
            "verified": false, 
            "entities": {
                "description": {
                    "urls": []
                }
            }, 
            "profile_image_url_https": "https://pbs.twimg.com/profile_images/691152324291661824/kr2IsMs8_normal.jpg", 
            "profile_sidebar_fill_color": "DDEEF6", 
            "is_translator": false, 
            "geo_enabled": false, 
            "profile_text_color": "333333", 
            "followers_count": 162, 
            "protected": false, 
            "id_str": "1082649110", 
            "default_profile_image": false, 
            "listed_count": 25, 
            "lang": "en", 
            "utc_offset": null, 
            "statuses_count": 38396, 

Aqui está outro:

{
        "favorited": false, 
        "contributors": null, 
        "truncated": true, 
        "text": "Wikileaks: NYT\u2019s Amy Chozick Privately Praised Hillary for Strong Connection with Working Class\u2026 https://t.co/bXUEHwEccE", 
        "possibly_sensitive": false, 
        "is_quote_status": false, 
        "in_reply_to_status_id": null, 
        "user": {
            "follow_request_sent": false, 
            "has_extended_profile": false, 
            "profile_use_background_image": true, 
            "time_zone": null, 
            "id": 763916668171149312, 
            "description": "We show you the truth Hot Breaking news, USA politics, Trump and conservative support", 
            "default_profile": true, 
            "verified": false, 
            "entities": {
                "description": {
                    "urls": []
                }
            }, 
            "profile_image_url_https": "https://pbs.twimg.com/profile_images/763917371702513664/IPlCWEqa_normal.jpg", 
            "profile_sidebar_fill_color": "DDEEF6", 
            "is_translator": false, 
            "geo_enabled": false, 
            "profile_text_color": "333333", 
            "followers_count": 155, 
            "protected": false, 
            "id_str": "763916668171149312", 
            "default_profile_image": false, 
            "listed_count": 3, 
            "lang": "es", 
            "utc_offset": null, 
            "statuses_count": 14162, 
            "profile_background_color": "F5F8FA", 
            "friends_count": 295, 
            "profile_link_color": "1DA1F2", 
            "profile_image_url": "http://pbs.twimg.com/profile_images/763917371702513664/IPlCWEqa_normal.jpg", 
            "notifications": false, 
            "profile_background_image_url_https": null, 
            "profile_banner_url": "https://pbs.twimg.com/profile_banners/763916668171149312/1470967188", 
            "profile_background_image_url": null, 
            "name": "Politic Manager", 

O arquivo em si é muito grande e não sei onde posso compartilhá-lo livremente (sugestões aceitas).

Em uma escala maior, eu tenho 500k desses arquivos json que preciso processar e contar o número de tweets neles e extrair outros tipos de informações, incluindo o texto do tweet.

    
por Mona Jalal 16.01.2018 / 01:33

1 resposta

1

Suponho que seu arquivo JSON contenha uma lista de objetos de tweets, como ocorre quando você despeja uma linha do tempo da API do Twitter.

Conte o número de tweets:

jq '. | length' tweets.json

Obtenha o campo text de cada tweet:

jq '.[] | .text' tweets.json

Do campo text de cada tweet, obtenha a parte que corresponde à regex leak.* :

jq '.[] | .text | scan("leak.*")' tweets.json
    
por Florian Diesch 16.01.2018 / 03:44