将文本拆分为n个单词的较小文本

时间:2014-07-31 13:34:57

标签: text split

我有大量的文本(几千个)采用txt格式,并希望将它们拆分为500字长的块并将这些块保存到单独的文件夹中。

< *.txt  tr -c A-Za-z0-9 \\n | grep -v '^$' | split -l 500

可以完成这项工作,但它会将文本分成每行一个单词,而我希望保留原始格式。 我想知道是否有bash命令或Python脚本来执行此操作。

1 个答案:

答案 0 :(得分:0)

你也应该能够用csplit做到这一点,但我在这里找到的perl解决方案运气更好; https://unix.stackexchange.com/questions/66513/how-can-i-split-a-large-text-file-into-chunks-of-500-words-or-so
感谢Joseph R。

$ cat generatewordchunks.pl 
perl -e '
         undef $/;
         $file=<>;
         while($file=~ /\G((\S+\s+){500})/gc)
         {
            $i++;
            open A,">","chunk-$i.txt";
            print A $1;
            close A;
         }
         $i++;
         if($file=~ /\G(.+)\Z/sg)
         {
          open A,">","chunk-$i.txt";
          print A $1;
         }
        '  $1
$ ./generatewordchunks.pl woord.list 
$ ls -ltr
total 13
-rwxrwx--- 1 root vboxsf 5934 Jul 31 16:03 woord.list
-rwxrwx--- 1 root vboxsf  362 Jul 31 16:08 generatewordchunks.pl
-rwxrwx--- 1 root vboxsf 4203 Jul 31 16:11 chunk-1.txt
-rwxrwx--- 1 root vboxsf 1731 Jul 31 16:11 chunk-2.txt