如何将大型文本文件拆分为 500 个单词左右的块?

如何将大型文本文件拆分为 500 个单词左右的块?

我知道有一个命令split可以根据文件大小将文件分成几个块,然后有一个命令wc可以计算单词数。我只是不知道如何将两者结合使用。

答案1

必须用 来完成吗wc?因为这里我遇到了使用正则表达式作为csplit模式的非常好的尝试。我现在没有系统来测试它,但正则表达式本身似乎可以完成这项工作。

表达式看起来像这样:

 csplit input-file.txt '/([\w.,;]+\s+){500}/'

答案2

尝试这样做:

file=/etc/passwd
count=2
count_file_lines=$(wc -l < "$file")
split -n$((count_file_lines/count)) "$file"
ls -ltr x*

这会将文件除以$count(2)

答案3

Unix 实用程序通常在整行上运行,因此最好的办法是首先修改输入,以便每行写入一个单词,如下所示(如果单词中有其他字符,则可能需要稍微修改此命令):

<inputfile tr -c A-Za-z0-9 \\n

由于您只对单词感兴趣,因此通过将输出管道传输到调用中来消除空行可能是个好主意grep。完整命令如下所示:

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

您可以稍后加入新文件,以便将所有内容恢复到一行(使用类似的东西tr -d \\n),但是如果您计划使用 Unix 工具进行更多操作,请保持这种方式,split这不是唯一可以运行的程序整行。

答案4

您还可以使用此软件来处理拆分字文件。 Word Files Splitter是一个优秀的工具,可以根据Word文件中的页数或节数将单个Word文件拆分为多个Word文件。

http://www.windowindia.net/word-files-splitter.html

相关内容