Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 正则表达式从Google Reader JSON文件中提取所有带星号的项目URL_Html_Regex_Json_Url - Fatal编程技术网

Html 正则表达式从Google Reader JSON文件中提取所有带星号的项目URL

Html 正则表达式从Google Reader JSON文件中提取所有带星号的项目URL,html,regex,json,url,Html,Regex,Json,Url,不幸的是,谷歌阅读器将于年中关闭。 因为我在Google Reader中有大量带星号的项目,所以我想对它们进行备份。 这可以通过谷歌阅读器外卖实现。它以JSON格式生成一个文件 现在我想从这个数MB的大文件中提取所有的文章URL 起初,我认为最好使用正则表达式作为url,但似乎最好使用正则表达式提取所需的文章url,以便只查找文章url。这将防止提取不需要的其他URL 下面是一个json文件部分外观的简短示例: "published" : 1359723602, "updated" : 1359

不幸的是,谷歌阅读器将于年中关闭。 因为我在Google Reader中有大量带星号的项目,所以我想对它们进行备份。 这可以通过谷歌阅读器外卖实现。它以
JSON
格式生成一个文件

现在我想从这个数MB的大文件中提取所有的文章URL

起初,我认为最好使用正则表达式作为url,但似乎最好使用正则表达式提取所需的文章url,以便只查找文章url。这将防止提取不需要的其他URL

下面是一个json文件部分外观的简短示例:

"published" : 1359723602,
"updated" : 1359723602,
"canonical" : [ {
  "href" : "http://arstechnica.com/apple/2013/02/omni-group-unveils-omnifocus-2-omniplan-omnioutliner-4-for-mac/"
} ],
"alternate" : [ {
  "href" : "http://feeds.arstechnica.com/~r/arstechnica/everything/~3/EphJmT-xTN4/",
  "type" : "text/html"
} ],
我只需要您可以在此处找到的URL:

 "canonical" : [ {
  "href" : "http://arstechnica.com/apple/2013/02/omni-group-unveils-omnifocus-2-omniplan-omnioutliner-4-for-mac/"
} ],
也许有人想说正则表达式提取所有这些URL的样子


这样做的好处是有一种快速而肮脏的方法从Google Reader中提取带星号的项目URL,并在处理后将其导入pocket或evernote等服务。

我知道你问过regex,但我认为有更好的方法来处理这个问题。多行正则表达式是一种PITA,在这种情况下,没有必要对大脑造成这种伤害

我会从
grep
开始,而不是regex。
-A1
参数表示“返回匹配的行,然后返回一行”:

然后,我会再次搜索href:

grep -A1 "canonical" <file> | grep "href"
现在,我可以使用awk仅获取url:

grep -A1 "canonical" <file> | grep "href" | awk -F'" : "' '{ print $2 }' 
现在我只需要去掉额外的报价:

grep -A1 "canonical" <file> | grep "href" | awk -F'" : "' '{ print $2 }' | tr -d '"'

我知道你问过regex,但我认为有更好的方法来处理这个问题。多行正则表达式是一种PITA,在这种情况下,没有必要对大脑造成这种伤害

我会从
grep
开始,而不是regex。
-A1
参数表示“返回匹配的行,然后返回一行”:

然后,我会再次搜索href:

grep -A1 "canonical" <file> | grep "href"
现在,我可以使用awk仅获取url:

grep -A1 "canonical" <file> | grep "href" | awk -F'" : "' '{ print $2 }' 
现在我只需要去掉额外的报价:

grep -A1 "canonical" <file> | grep "href" | awk -F'" : "' '{ print $2 }' | tr -d '"'

太好了,这很有魅力。请给我一个提示,我如何能额外实现添加一些字符到每个项目?我想这样做
  • 也有大约400种方法。。。perl可能是我最喜欢的:
    。|perl-ne'chomp;打印“
  • \n”
    太好了,这是一种魅力。请给我一个提示,我如何能额外实现添加一些字符到每个项目?我想这样做
  • 也有大约400种方法。。。perl可能是我最喜欢的:
    。|perl-ne'chomp;打印“
  • \n”
    不要使用正则表达式执行此操作。正则表达式不是一根魔杖,你可以在每一个涉及文本的问题上挥舞它。使用现有的、编写的、经过测试和调试的JSON库。顺便说一句,我也对google reader的关闭感到难过。我发现这是一个可以接受的替代品。虽然不像reader那样响应迅速,但它有一个非常相似的接口,可以直接从Google Takeout XML输出导入OPML。正则表达式不是一根魔杖,你可以在每一个涉及文本的问题上挥舞它。使用现有的、编写的、经过测试和调试的JSON库。顺便说一句,我也对google reader的关闭感到难过。我发现这是一个可以接受的替代品。虽然不像reader那样响应迅速,但它有一个非常相似的界面,可以直接从Google Takeout XML输出导入OPML。
    grep -A1 "canonical" <file> | grep "href" | awk -F'" : "' '{ print $2 }' | tr -d '"'
    
    http://arstechnica.com/apple/2013/02/omni-group-unveils-omnifocus-2-omniplan-omnioutliner-4-for-mac/