sed命令处理输入流并转换单词的每次出现

时间:2018-12-30 11:35:03

标签: regex bash sed

我需要我的代码帮助。 我需要编写sed命令来处理输入流,并将每次出现的“页面”一词转换为数字,然后将其转换为HTML超级链接,其形式为NNN,即页面编号。

例如:

See page 107

应替换为:

See <a href="#p107">page 107</a>

该代码应符合POSIX:

sed -r 's/________/_______/g'

1 个答案:

答案 0 :(得分:1)

您可以使用使用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>