如何用sed替换一些带连字符的空格?

时间:2017-04-13 20:13:33

标签: regex sed

我正在做一些wiki / markdown转换,并且有这样的字符串:

[[Moo Cow]]

我希望它是这样的:

[Moo Cow](Moo-Cow.html)

如何使用sed

执行此操作

3 个答案:

答案 0 :(得分:2)

你可以像这样减少你的sed表达式:

sed -i 's/\[\[\([^]]*\)]]/[\1](\1.html)/g;:a;s/\(]([^) ]*\) /\1-/g;ta;' file

或perl:

perl -pe's/\[\[([^]]*)]]/$a=$1;$a=~y# #-#;"[$1]($a.html)"/ge' file

答案 1 :(得分:0)

这是一个sed命令,可以为您执行此操作:

sed -i 's/\]\]/\]\(\.html\)/g; s/\[\[/\[/g; s/\[\(.*\)\](\.html)/\[\1\](\1.html)/g; :a;s/\(([^)]*\) /\1-/;ta' filename.md

不,那不漂亮。是的,这很难看。但是,它有效。

答案 2 :(得分:0)

只需使用awk:

$ awk '{gsub(/[][]/,""); x=$0; gsub(/ /,"-"); printf "[%s](%s).html\n", x, $0}' file
[Moo Cow](Moo-Cow).html