我想在linux命令行下执行标题命名的操作(几个ca bash脚本也会这样做)。我试过的命令是:
sed 's/href="([^"])"/$1/g' page.html > list.lst
但显然失败了。
确切地说,这是我的意见:
<link rel="stylesheet" type="text/css" href="style/css/colors.css" />
<link rel="stylesheet" type="text/css" href="style/css/global.css" />
<link rel="stylesheet" type="text/css" href="style/css/icons.css" />
我想要的输出是输入文件中所有匹配项的逗号分隔或空格分隔列表:
style/css/colors.css,style/css/global.css,style/css/icons.css
我认为我得到了正确的表达方式:href =“([^”] *)“
但我不知道如何执行此操作。 sed将进行搜索/替换,这不是我想要的。(相反,我只需要保留匹配并抛弃其余部分,而不是替换它们)
答案 0 :(得分:7)
grep href page.html | sed 's/^.*href="\([^"]*\)".*$/\1/' | xargs | sed 's/ /,/g'
这将提取其中包含href
的所有行,并且每行只会获得第一个href
。另外,请参阅this post关于使用正则表达式解析HTML。