在两个字符串之间提取文本(命令行)

时间:2017-08-28 14:16:32

标签: json command-line grep extract spotify

我试图从Spotify API中提取json文件中的歌曲名称。单词" name"对于艺术家和歌曲都是如此,我试图提取歌曲名称。

我尝试使用grep,但我不确定如何在所需文本(歌曲名称)之前和之后查找字符串模式。在这种情况下,歌曲名称在" name"之后,但在" popular"之前。在艺术家的情况下'姓名,名称是" name"之前"输入"。

如何在两个单词之间提取文字?

{
  "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"
  }, {

2 个答案:

答案 0 :(得分:0)

我想通过一些研究,你可以找到很多解决问题的方法。 例如,如果您始终具有引用的结构类型

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

会奏效。您可以找到更多整洁而强大的解决方案,但在您的情况下,这可行。

修改

鉴于您有新文件,您可以使用

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

答案 1 :(得分:0)

尝试使用 pcregrep

pcregrep -o1 -M 'name" : "(.*)".*\n.*"popularity'