如何使用 sed 正则表达式模式匹配

DMcg

我正在学习 bash,我正在尝试解析网页(https://chromium-i18n.appspot.com/ssl-address)并使用 sed 提取感兴趣的 href。我使用的模式是:

/<a\shref=\'\/ssl-address\/data\/([^\"]*)\'>/siU

但是,我无法让表达式与 sed 一起使用。当我运行时:

data=$(wget ${serviceUrl} -q -O -)
parsedData=$(sed '/<a\shref=\'\''\/ssl-address\/data\/([^\"]*)\'\''>/siU/' <<< ${data})
echo ${parsedData}

我收到以下错误:

sed: 1: "/<a\shref=\'\/ssl-addre ...": unterminated substitute pattern

我究竟做错了什么?

埃德·莫顿

这是你想要做的吗?

$ wget 'https://chromium-i18n.appspot.com/ssl-address' -q -O - |
    sed -n 's:.*/ssl-address/data/\([^'\'']*\).*:\1:p'
AC
AD
AD/Canillo
AD/Encamp

我看到您在 sed 脚本周围使用双引号而不是单引号得到了一些答案,因此您可以这样做,"...'..."而不是'...'\''...'- 尽管很诱人,并且对于当前特定的示例它可以正常工作,但不要这样做。为了避免任何意外现在或如果/当您的要求稍后更改时,在所有 shell 编程中始终将字符串和脚本括在单引号中,除非您需要将它们暴露给 shell 进行解释,然后使用双引号,除非您需要shell 进行通配并对它们进行文件名扩展,然后不使用引号。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在bash中使用SED打印正则表达式匹配项

如何使用sed“调试”正则表达式?

如何使用正则表达式递归匹配模式?

SED如何用正则表达式替换Line

使用sed匹配正则表达式

正则表达式-如何使文本与模式前瞻匹配

如何获得正则表达式模式以连续匹配?

通过在bash中使用sed,在特定模式正则表达式匹配之后从文件插入内容

使用SED用正则表达式模式替换捕获组

如何在sed命令中将正则表达式匹配1至3次?

如何用sed表达此正则表达式?

如何使用sed或awk注释匹配正则表达式的多行

如何使用正则表达式匹配此模式

如何使用sed仅返回正则表达式匹配的第n次出现?

如何使用sed或其他工具将匹配项修改为正则表达式?

sed:正则表达式,如何替代?

如何使用适当的正则表达式在sed中查找模式?

正则表达式代码经过测试,但与sed配合使用时不匹配

正则表达式与grep或sed匹配后,如何只返回两个数字?

使用sed将字符串匹配的正则表达式替换为通配符

使用正则表达式进行sed替换输出

如何将除正则表达式以外的所有内容与sed匹配?

正则表达式未使用sed进行匹配

如何使用带有正则表达式模式的 sed 替代品作为变量?

sed - 如何在特定行上打印正则表达式匹配

正则表达式使用 sed 命令匹配和替换 yaml 文件中的文本

如何编写正则表达式以匹配以下模式

使用 bash(正则表达式、sed)删除模式之间的分隔代码块

如何匹配和提取正则表达式模式?