我正在寻找解决降价问题的帮助。我有许多用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还是至少说明哪个工具最适合使用它?
我建议以下内容:
sed 's/[[:space:]]\(=\|{{\|\*\|'\''\)/\n\1/g' your_one_line_file
这考虑了特殊序列=
,==
,===
,{{
,*
,'
,''
,'''
,但只有当他们跟随一个空格或换行或选项卡,然后等它突破行以换行符替换的是“空间”。
在转义单引号时要格外小心:必须在包围sed脚本的引号之外进行操作,然后关闭并重新打开。
在澄清/请求了Kuba之后,并且为了在特殊序列所包围的字符串的末尾留出空格,我们编写了一个脚本(将其写到文件中减轻了巧妙转义'
字符的负担),该脚本具有使用\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
然后在带有-r
选项的单行文件上运行脚本,因为我使用扩展的正则表达式使脚本更短(使用+
元字符):
sed -r -f sedscr your_one_line_file
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句