文字分割脚本出现问题

时间:2019-01-30 12:14:41

标签: text awk split

我想将一个大文本文档(.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

对这里发生的事情有任何想法吗?非常感谢。

0 个答案:

没有答案