regex - sed 命令处理输入流并转换每个出现的单词
问题描述
我需要有关我的代码的帮助。我需要编写一个 sed 命令来处理输入流并将每个出现的单词“page”后面跟一个数字转换为表单的 HTML 超链接,其中 NNN 是页码。
例如:
See page 107
应替换为:
See <a href="#p107">page 107</a>
代码应符合 POSIX:
sed -r 's/________/_______/g'
解决方案
您可以使用这个使用 POSIX 表示法的正则表达式,
(page[[:space:]]+([[:digit:]]+))
并用这个替换它,
<a href="#p\2">\1</a>
试试这个示例命令,
echo "See page 107" | sed -r 's~(page[[:space:]]+([[:digit:]]+))~<a href="#p\2">\1</a>~g'
或者使用 -E 而不是 -r(对于 OS X)
echo "See page 107" | sed -E 's~(page[[:space:]]+([[:digit:]]+))~<a href="#p\2">\1</a>~g'
这给出了这个输出,
See <a href="#p107">page 107</a>
推荐阅读
- java - BFS 迷宫不只显示最短路径
- angular - 如何解决错误:“mapboxgl:更新图层时已存在具有此 ID 的源”?
- ios - 如何正确调用 GrandCentralDispatch
- scala - 如何根据 spark scala 中的条件获取结果
- jmeter - 在同一个请求体中添加多个不同值的子元素
- sql - 如何在我的 SQL 代码中找出这个逗号错误?
- visual-studio-code - 如何通过从 msys2 bash 执行的 vscode 禁用标准输出或标准错误
- sqlite - Sqlite,如何根据参数决定是否执行 WHERE 查询
- reactjs - 将 Spotify API 与 Django 一起使用并做出反应
- sql - 如何使用具有多个搜索参数的搜索参数从匹配搜索字段的表中进行选择