regex - 从文件中提取正则表达式捕获组的匹配项

标签 regex linux command-line

我想在 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 会进行搜索/替换,这不是我想要的。(相反,我只需要保留匹配项并将其余部分扔掉,而不是替换它们)

最佳答案

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/

相关文章:

Python-使用正则表达式模式替换 DataFrame 中列表中的单词

linux - 一次循环两个不同的变量,Linux,unix

linux - 在gradle中维护属性序列

command-line - Gnu-Linux/Unix 终端是否有规范或标准宽度?

c++ - 如何在 Turbo C++ 中将整数作为命令行参数传递

java - 删除所有空行

javascript - RegExp : I want to remove unnecessary words in the Sentence. 我该怎么做?

javascript - 在 JavaScript 正则表达式中命名捕获组?

linux - 从 dd 损坏的分区恢复数据

c - 将数据从 C 程序发送到命令行密码提示