用于修复onelined markdown的脚本

时间:2014-08-08 12:52:31

标签: regex text replace sed tr

我正在寻找帮助修复降价。我有很多用markdown编写的文件,但是所有文件都在一行中,例如:

'''Tittle''' - there is some text. ==Heading== {{Image|l=http://exaple.com}} ==References== *[http://www.example.com] *some text here

要使这个文件有效,我必须在每个特殊字符之前输入换行符,例如:

'''Tittle''' - there is some text.

==Heading==

{{Image|l=http://exaple.com}}
Some more text.

==References==

*[http://www.example.com]
*some text here

我正在寻找自动化此过程的方法,有人可以帮我编写RegEx,或者至少解释哪种工具最适合用它?

1 个答案:

答案 0 :(得分:0)

我建议如下:

sed 's/[[:space:]]\(=\|{{\|\*\|'\''\)/\n\1/g' your_one_line_file

这会考虑特殊序列======{{*'''''',但仅当它们跟随空格或换行符或标签等时,它才会断开替换"空格"带换行符。

当你逃避单引号时要小心:它必须在包含 sed 脚本的引号之外完成,我关闭然后重新打开。

修改

在Kuba的澄清/请求之后,为了允许特殊序列所包含的字符串末尾的空格,我们编写一个脚本(将其写入文件可以减轻{{1}巧妙地逃避的负担}}具有模式匹配线,使用模式本身中的'引用来检测结束特殊序列。因此,请将以下脚本写入文件,例如\1

sedscr

然后使用s/[[:space:]](=+)([^=]*)\1/\n\1\2\1/g s/[[:space:]]('+)([^']*)\1/\n\1\2\1/g s/[[:space:]]\{\{([^}]*)\}\}/\n{{\1}}/g s/[[:space:]]\*/\n*/g 选项在单行文件上运行脚本,因为我使用扩展的regexp使脚本更短(使用-r元字符):

+