我正在寻找帮助修复降价。我有很多用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,或者至少解释哪种工具最适合用它?
答案 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
元字符):
+