我想将一个大文本文档(.txt)拆分为多个。文本文件是西班牙议会中的一堆辩论。案文分为政策倡议(我不确定这是否是惯用的),我想按倡议将其拆分成文档。有趣的是,每个计划都采用下一种形式的标题:
- 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来捕获这些特征,以便在这些辩论之间使用定界符。
理想的做法是选择标题和标题下的辩论,直到出现另一个标题,并以此作为新文件,因此最后,我可以在一个文件中包含带有标题和辩论的政策倡议。感谢这个社区,我有了一个功能脚本:
awk '/^-.+[0-9]{3}\/[0-9]{6}\.\)$/ {
if (p) close (p)
p = sprintf("split%05i.txt", ++i) }
{ if (p) print > "p" }' inputfile.txt
但是当我运行它(在W10中使用Cygwin)时,什么也没有发生。我以为这是由于Windows配置问题或类似问题引起的,但我只是在Ubuntu VM中尝试过,却发生了同样的事情,即什么也没发生:
$ ls -l
total 228
-rw-rw-r-- 1 ubuntu ubuntu 219166 Jan 30 11:28 tryme.txt
-rwxr-xr-x 1 ubuntu ubuntu 8259 Jan 30 11:24 ubiquity.desktop
$ awk '/^-.+[0-9]{3}\/[0-9]{6}\.\)$/ {
if (p) close (p)
p = sprintf("split%05i.txt", ++i) }
{ if (p) print > "p" }' tryme.txt
$ ls -l
total 228
-rw-rw-r-- 1 ubuntu ubuntu 219166 Jan 30 11:28 tryme.txt
-rwxr-xr-x 1 ubuntu ubuntu 8259 Jan 30 11:24 ubiquity.desktop
对这里发生的事情有任何想法吗?非常感谢。