[solved]使用sed和awk提取出浏览器导出的书签的网址

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
numbchild
帖子: 107
注册时间: 2010-03-16 12:34
送出感谢: 0
接收感谢: 0

[solved]使用sed和awk提取出浏览器导出的书签的网址

#1

帖子 numbchild » 2010-12-28 22:58

我想要提取出从chromium里导出的书签的url。下面是bookmarks.html里的一个片断。请高手帮忙写一个脚本或者命令行来得到url。谢谢

<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
It will be read and overwritten.
DO NOT EDIT! -->
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks</H1>
<DL><p>
<DT><H3 ADD_DATE="0" LAST_MODIFIED="1293430925" PERSONAL_TOOLBAR_FOLDER="true">Bookmarks Bar</H3>
<DL><p>
<DT><A HREF="https://www.google.com/reader/view/" ADD_DATE="1286711776" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACRklEQVQ4jW2SS0hUYRTHf3fuvJ1p1CFprCwLwkQzUIpoE1hQYES7chMYCLkpgvZtKmzfJqJWCrWQKNxli2gj2IgwIBiTD6RobGbUeTn3fo8Wd7jmtbM6538e3/8752/gsfL4mAawCpvIyg4A9XyR8mrOrel49ZZod48B4Ptf">Reader</A>
上次由 numbchild 在 2010-12-28 23:12,总共编辑 1 次。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 使用sed和awk提取出浏览器导出的书签的网址

#2

帖子 eexpress » 2010-12-28 23:05

perl 才适合,一句话,读入到数组。

@url=m"(?:http|mms|rtsp)://[^\s]*"g;
● 鸣学
头像
numbchild
帖子: 107
注册时间: 2010-03-16 12:34
送出感谢: 0
接收感谢: 0

Re: 使用sed和awk提取出浏览器导出的书签的网址

#3

帖子 numbchild » 2010-12-28 23:15

eexpress 写了:perl 才适合,一句话,读入到数组。

@url=m"(?:http|mms|rtsp)://[^\s]*"g;
哈哈,第一次得到ee大神的回复,很高兴,问题已解决。最近正在看O'reilly 的sed awk的书。外加linux内核分析,不过这本书不知道哪本书比较正规点,
头像
realfiona
帖子: 137
注册时间: 2007-11-20 10:58
来自: Hangzhou, China
送出感谢: 0
接收感谢: 0
联系:

Re: [solved]使用sed和awk提取出浏览器导出的书签的网址

#4

帖子 realfiona » 2010-12-31 15:47

使用sed提取链接并且保存到backup.txt文件中,假设导出的书签文件为bookmarks.html。Firefox和Chrome的文件格式类似,方法也几乎相同,除了Firefox有place:开头的链接(?忘记怎么描诉了),所以在Firefox中要剔除这些链接。下面是命令:

Firefox:

代码: 全选

sed -n -e '/place:/!s/\s*<DT><A HREF="\([^"]*\)".*/\1/w backup.txt' bookmarks.html
Chrome:

代码: 全选

sed -n -e 's/\s*<DT><A HREF="\([^"]*\)".*/\1/w backup.txt' bookmarks.html
主要是这个替换命令, 对应着boomarks中的格式, 0或多个空格开始,跟着<DT><A HREF="链接地址" ADD_DATE .......>链接描述</a>

代码: 全选

s/\s*<DT><A HREF="\([^"]*\)".*/\1/p
目的就是要把书签链接地址取出来, 因此弄个正则表达式分组 \([^"]*\) 来表示链接地址部分
头像
numbchild
帖子: 107
注册时间: 2010-03-16 12:34
送出感谢: 0
接收感谢: 0

Re: [solved]使用sed和awk提取出浏览器导出的书签的网址

#5

帖子 numbchild » 2010-12-31 23:41

realfiona 写了:使用sed提取链接并且保存到backup.txt文件中,假设导出的书签文件为bookmarks.html。Firefox和Chrome的文件格式类似,方法也几乎相同,除了Firefox有place:开头的链接(?忘记怎么描诉了),所以在Firefox中要剔除这些链接。下面是命令:

Firefox:

代码: 全选

sed -n -e '/place:/!s/\s*<DT><A HREF="\([^"]*\)".*/\1/w backup.txt' bookmarks.html
Chrome:

代码: 全选

sed -n -e 's/\s*<DT><A HREF="\([^"]*\)".*/\1/w backup.txt' bookmarks.html
主要是这个替换命令, 对应着boomarks中的格式, 0或多个空格开始,跟着<DT><A HREF="链接地址" ADD_DATE .......>链接描述</a>

代码: 全选

s/\s*<DT><A HREF="\([^"]*\)".*/\1/p
目的就是要把书签链接地址取出来, 因此弄个正则表达式分组 \([^"]*\) 来表示链接地址部分
谢谢ls讲解的这么详细. :em11
回复

回到 “Shell脚本”