我正在学习 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] 删除。
我来说两句