【问题标题】:Bookmarks parsing issue书签解析问题
【发布时间】:2023-03-17 22:37:01
【问题描述】:

我有大量书签,想将它们导出并与我合作的小组共享。问题是当我导出它们时,浏览器(Firefox)添加了 ADD_DATE 和 LAST_MODIFIED 字段。我希望只使用 cut 或 awk 来拉出我想要的字段,但是在 >(website_name) 之前缺少空格使这变得困难。而且我的正则表达式技能很弱。

如何在行尾的倒数第二个 > 之前添加一个空格,以便我可以使用 cut 或 awk 将我想要的字段提取到新文件中?

例如:123456">SecurityTrails 将变为 123456 >SecurityTrails

请参阅下面的示例,了解我正在使用的内容。非常感谢任何帮助!

<DT><A HREF="https://securitytrails.com/" ADD_DATE="1586881447" LAST_MODIFIED="1612650221">SecurityTrails</A>


【问题讨论】:

  • 使用 Javascript 可能更容易(如果这在您的技能范围内)。如果您使用正则表达式方法,我建议您使用regexr.com。它非常适合测试正则表达式并告诉你很多关于什么是什么。
  • 一个更好的例子可以帮助别人给你一个解决方案。在您的答案中使用代码块来显示输入数据、当前方法的实际输出以及所需的输出。此外,如果您可以共享您正在使用的正则表达式或 awk。 & 欢迎来到 SO! :) 你确实举了一些例子,但我很难理解你目前所需要的东西。

标签: parsing bookmarks


【解决方案1】:

我自己使用 Firefox。它还经常通过 base64 编码将 favicon 嵌入到导出的 bookmarks.html 文件中。所以要考虑不同的场景(不仅仅是 OP 提到的场景),可能类似于

{mawk/mawk2/gawk} 'BEGIN { FS = "\042" } $1 = $1'

然后做任何你想要的切割。这只是假设 OP 想要保留它的每一点,并简单地删除引号。

现在,如果目标只是取出它的 URL+名称,

{mawk/mawk2/gawk} 'BEGIN { DBLQT="\042"; FS = "(<A HREF=" DBLQT "|>)" } /<A HREF=/ {

             url = substr($2, 1, index($2, DBLQT) - 1);   
        sitename = $(NF-1); 

        sub(/<\/A$/, "", sitename) ;         
        print url " > "  sitename  ; }'       # or whatever way you want the output to be

我只是把它输入得更加冗长,以显示 \042 的含义 - 双引号的 ascii 八进制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多