我想将一个大文本文档(.txt)拆分为多个。之前已经有人问过这个问题,但是我认为我需要一个特定的RegEx来完成此任务。
我尝试了几种“拆分”软件,但尚未找到令人满意的解决方案。文本文件是西班牙议会中的一堆辩论。案文分为政策倡议(我不确定这是否惯用),我想按倡议将其拆分成文档。
有趣的是,每个计划都以下一种形式具有自己的标题:
- DEL GRUPO PARLAMENTARIO CATALÁN (CONVERGÈNCIA I UNIÓ), REGULADORA DE LOS HORARIOS COMERCIALES. (Número de expediente 122/000004.)
- DEL DIPUTADO DON MARIANO RAJOY BREY, DEL GRUPO PARLAMENTARIO POPULAR EN EL CONGRESO, QUE FORMULA AL SEÑOR PRESIDENTE DEL GOBIERNO: ¿CÓMO VALORA USTED LOS PRIMEROS DÍAS DE SU GOBIERNO? (Número de expediente 180/000021.)
如您所见,每个标题都是大写的,它以减号开头,以XXX/XXXXXX.)
(其中X是数字),点和右括号结尾。每个标题互不相同。我虽然做了一些RegEx来捕获这些特征,以便在这些辩论之间使用定界符,但是老实说,我不知道该怎么做。
理想的做法是选择标题和标题下的辩论,直到出现另一个标题,并以此作为新文件,因此最后,我可以在一个文件中包含带有标题和辩论的政策倡议。
那么,可以使用RegEx解决方案来做到这一点吗?我需要哪种软件?记事本++是否足够?
答案 0 :(得分:2)
这是一次简单的Awk尝试。
awk '/^- DEL .+ \(Número de expediente [1-9][0-9]*\/[0-9]+\.\)$/ {
if (p) close (p)
p = sprintf("split%05i.txt", ++i) }
{ print > p }' inputfile.txt
您对“所有大写字母”的定义似乎都不是很明确,因此我作了一些欺骗;您可能需要调整我的假设。您的Awk可能不会轻易将É
等识别为大写,也许还取决于您的语言环境。
答案 1 :(得分:1)
我建议此正则表达式匹配的标题:
^\-.+\d{3}\/\d{6}\.\)$
我假定标题总是与XXX/XXXXXX.)
,其中X
是一个数位。
您可以使用this tool进行测试,它还提供了有关语法的说明,并且可以导出某些编程语言的代码。
大多数文本编辑器在查找工具中都具有“ RegEx”选项,但是在某些用例中可能还不够。同样,几乎任何编程语言都可以使用RegEx。