2017-08-28 64 views
0

我試圖從Spotify API的json文件中提取歌曲名稱。 「名字」這個詞出現在藝術家和歌曲中,我試圖提取歌曲名稱。提取兩個字符串之間的文本(命令行)

我嘗試過使用grep,但我不確定如何在所需文本(歌曲名稱)前後查找字符串模式。在這種情況下,歌曲名稱在「名稱」之後,但在「流行度」之前。在藝術家名字的情況下,名字是在「名字」之後和「類型」之前。

我將如何提取兩個單詞之間的文本?

{ 
    "tracks" : [ { 
    "album" : { 
     "album_type" : "album", 
     "artists" : [ { 
     "external_urls" : { 
      "spotify" : "https://open.spotify.com/artist/13ubrt8QOOCPljQ2FL1Kca" 
     }, 
     "href" : "https://api.spotify.com/v1/artists/13ubrt8QOOCPljQ2FL1Kca", 
     "id" : "13ubrt8QOOCPljQ2FL1Kca", 
     "name" : "A$AP Rocky", 
     "type" : "artist", 
     "uri" : "spotify:artist:13ubrt8QOOCPljQ2FL1Kca" 
     } ], 
     "available_markets" : [ "AD", "AR", "AT", "AU", "BE", "BG", "BO", "BR", "CA", "CH", "CL", "CO", "CR", "CY", "CZ", "DE", "DK", "DO", "EC", "EE", "ES", "FI", "FR", "GB", "GR", "GT", "HK", "HN", "HU", "ID", "IE", "IS", "IT", "JP", "LI", "LT", "LU", "LV", "MC", "MT", "MX", "MY", "NI", "NL", "NO", "NZ", "PA", "PE", "PH", "PL", "PT", "PY", "SE", "SG", "SK", "SV", "TH", "TR", "TW", "US", "UY" ], 
     "external_urls" : { 
     "spotify" : "https://open.spotify.com/album/1E1eyI5uGllppJZCxNoF9w" 
     }, 
     "href" : "https://api.spotify.com/v1/albums/1E1eyI5uGllppJZCxNoF9w", 
     "id" : "1E1eyI5uGllppJZCxNoF9w", 
     "images" : [ { 
     "height" : 640, 
     "url" : "https://i.scdn.co/image/b0dad68115b71ec6c81240eac982da7d14676e6d", 
     "width" : 640 
     }, { 
     "height" : 300, 
     "url" : "https://i.scdn.co/image/342fd8bf9219b2369394bc6adf57a69b3fecc0f7", 
     "width" : 300 
     }, { 
     "height" : 64, 
     "url" : "https://i.scdn.co/image/79d71b48c2fd180c7506a2db2e13ed0a7c8107a2", 
     "width" : 64 
     } ], 
     "name" : "LONG.LIVE.A$AP (Deluxe Version)", 
     "type" : "album", 
     "uri" : "spotify:album:1E1eyI5uGllppJZCxNoF9w" 
    }, 
    "artists" : [ { 
     "external_urls" : { 
     "spotify" : "https://open.spotify.com/artist/13ubrt8QOOCPljQ2FL1Kca" 
     }, 
     "href" : "https://api.spotify.com/v1/artists/13ubrt8QOOCPljQ2FL1Kca", 
     "id" : "13ubrt8QOOCPljQ2FL1Kca", 
     "name" : "A$AP Rocky", 
     "type" : "artist", 
     "uri" : "spotify:artist:13ubrt8QOOCPljQ2FL1Kca" 
    }, { 
     "external_urls" : { 
     "spotify" : "https://open.spotify.com/artist/3TVXtAsR1Inumwj472S9r4" 
     }, 
     "href" : "https://api.spotify.com/v1/artists/3TVXtAsR1Inumwj472S9r4", 
     "id" : "3TVXtAsR1Inumwj472S9r4", 
     "name" : "Drake", 
     "type" : "artist", 
     "uri" : "spotify:artist:3TVXtAsR1Inumwj472S9r4" 
    }, { 
     "external_urls" : { 
     "spotify" : "https://open.spotify.com/artist/17lzZA2AlOHwCwFALHttmp" 
     }, 
     "href" : "https://api.spotify.com/v1/artists/17lzZA2AlOHwCwFALHttmp", 
     "id" : "17lzZA2AlOHwCwFALHttmp", 
     "name" : "2 Chainz", 
     "type" : "artist", 
     "uri" : "spotify:artist:17lzZA2AlOHwCwFALHttmp" 
    }, { 
     "external_urls" : { 
     "spotify" : "https://open.spotify.com/artist/2YZyLoL8N0Wb9xBt1NhZWg" 
     }, 
     "href" : "https://api.spotify.com/v1/artists/2YZyLoL8N0Wb9xBt1NhZWg", 
     "id" : "2YZyLoL8N0Wb9xBt1NhZWg", 
     "name" : "Kendrick Lamar", 
     "type" : "artist", 
     "uri" : "spotify:artist:2YZyLoL8N0Wb9xBt1NhZWg" 
    } ], 
    "available_markets" : [ "AD", "AR", "AT", "AU", "BE", "BG", "BO", "BR", "CA", "CH", "CL", "CO", "CR", "CY", "CZ", "DE", "DK", "DO", "EC", "EE", "ES", "FI", "FR", "GB", "GR", "GT", "HK", "HN", "HU", "ID", "IE", "IS", "IT", "JP", "LI", "LT", "LU", "LV", "MC", "MT", "MX", "MY", "NI", "NL", "NO", "NZ", "PA", "PE", "PH", "PL", "PT", "PY", "SE", "SG", "SK", "SV", "TH", "TR", "TW", "US", "UY" ], 
    "disc_number" : 1, 
    "duration_ms" : 233786, 
    "explicit" : true, 
    "external_ids" : { 
     "isrc" : "USRC11201220" 
    }, 
    "external_urls" : { 
     "spotify" : "https://open.spotify.com/track/4XoP1AkbOurU9CeZ2rMEz2" 
    }, 
    "href" : "https://api.spotify.com/v1/tracks/4XoP1AkbOurU9CeZ2rMEz2", 
    "id" : "4XoP1AkbOurU9CeZ2rMEz2", 
    "name" : "F**kin' Problems", 
    "popularity" : 80, 
    "preview_url" : "https://p.scdn.co/mp3-preview/1649b7c26c8bcfa8b252601cf428844cec9a8446?cid=8897482848704f2a8f8d7c79726a70d4", 
    "track_number" : 7, 
    "type" : "track", 
    "uri" : "spotify:track:4XoP1AkbOurU9CeZ2rMEz2" 
    }, { 
+0

在其操作系統??嘗試新的文件。 – Sal

回答

0

我想通過一點研究,你可以找到很多解決你的問題的方法。 例如,如果你總是有結構的類型,你報

grep name filename | cut -c15- | rev | cut -c 3- | rev 

會工作。你可能會發現更多的整潔和強大的解決方案,但在你的情況下,這是有效的。

編輯

給你,你可以使用

grep name filename | rev | cut -c 3- | cut -f1 -d'"' | rev 
+0

我編輯了代碼塊,雖然它很長。該模式傾向於發生的每個「名稱」字符串出現藝術家,專輯或歌曲名稱。在嘗試了你推薦的grep之後,所有三種類型的名字都出現了。我發現歌曲名稱不同的主要方式是「流行度」。 –

+0

我已根據您的新文件編輯了答案。試一試。此外,當您在問題中添加代碼時,請始終複製您的代碼,選擇並單擊大括號以正確編輯。 (https://stackoverflow.com/editing-help) – Manfredo

0

pcregrep

pcregrep -o1 -M 'name" : "(.*)".*\n.*"popularity' 
相關問題