在正则表达式的反向引用中执行第二次替换
Performing a second replace in backreference for a regexp
我有来自表单的网页的行
<a href="url with spaces">description with spaces</a>
我想将其转换为 csv 格式
"url%20%with%20spaces","description with spaces"
输入一个 mediawiki 页面,期望外部链接是 [url%20%with%20spaces 描述 spaces](我不希望那个页面被#rreplace)
弄得乱七八糟
sed -Ee 's`.*href="(.*)">(.*)</a>.*`"",""`'
可以拆分 url,但我看不到在不影响 \2
的情况下仅在 \1 中用 %20 进一步替换 space 的简单方法
您可能会考虑使用 GNU awk
like
awk -F'href="|">|</a>' '{gsub(/ /, "%20",);print "\"""\",\"""\""}'
在线查看awk
demo。
这里的字段分隔符模式是href="|">|</a>
,它匹配href="
,或">
,或
`将行拆分为字段。
第二个字段需要额外处理,所以使用gsub(/ /, "%20",)
将每个space替换为%20
子串。更新后的字段 2 和字段 3 用于形成结果输出。
我有来自表单的网页的行
<a href="url with spaces">description with spaces</a>
我想将其转换为 csv 格式
"url%20%with%20spaces","description with spaces"
输入一个 mediawiki 页面,期望外部链接是 [url%20%with%20spaces 描述 spaces](我不希望那个页面被#rreplace)
弄得乱七八糟sed -Ee 's`.*href="(.*)">(.*)</a>.*`"",""`'
可以拆分 url,但我看不到在不影响 \2
的情况下仅在 \1 中用 %20 进一步替换 space 的简单方法您可能会考虑使用 GNU awk
like
awk -F'href="|">|</a>' '{gsub(/ /, "%20",);print "\"""\",\"""\""}'
在线查看awk
demo。
这里的字段分隔符模式是href="|">|</a>
,它匹配href="
,或">
,或
`将行拆分为字段。
第二个字段需要额外处理,所以使用gsub(/ /, "%20",)
将每个space替换为%20
子串。更新后的字段 2 和字段 3 用于形成结果输出。