分页: 1 / 1

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

发表于 : 2010-12-28 22:58
numbchild
我想要提取出从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>

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

发表于 : 2010-12-28 23:05
eexpress
perl 才适合,一句话,读入到数组。

@url=m"(?:http|mms|rtsp)://[^\s]*"g;

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

发表于 : 2010-12-28 23:15
numbchild
eexpress 写了:perl 才适合,一句话,读入到数组。

@url=m"(?:http|mms|rtsp)://[^\s]*"g;
哈哈,第一次得到ee大神的回复,很高兴,问题已解决。最近正在看O'reilly 的sed awk的书。外加linux内核分析,不过这本书不知道哪本书比较正规点,

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

发表于 : 2010-12-31 15:47
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
目的就是要把书签链接地址取出来, 因此弄个正则表达式分组 \([^"]*\) 来表示链接地址部分

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

发表于 : 2010-12-31 23:41
numbchild
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