我想在linux命令行下执行以标题命名的 Action (几个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会执行搜索/替换操作,而这并不是我想要的。(相反,我只需要保留匹配项并将其余匹配项丢弃,而不是替换它们)
最佳答案
grep href page.html | sed 's/^.*href="\([^"]*\)".*$/\1/' | xargs | sed 's/ /,/g'
这将提取其中包含
href
的所有行,并且只会获得每行的第一个href
。另外,请参阅this post有关使用正则表达式解析HTML。关于regex - 从文件中提取正则表达式捕获组的匹配项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6831741/