如何将一个文本文件拆分成多个*.txt文件?

Kri*_*ris 44 linux bash

我有一个文本文件file.txt(12 MB)包含:

something1
something2
something3
something4
(...)
Run Code Online (Sandbox Code Playgroud)

有什么办法来分割file.txt到12个*.txt文件让说file2.txt,file3.txt,file4.txt(......)?

小智 55

$ split -l 100 input_file output_file
Run Code Online (Sandbox Code Playgroud)

-l每个文件中的行数在哪里.这将创建:

  • output_fileaa
  • output_fileab
  • output_fileac
  • output_filead
  • ....


CS *_*Pei 47

您可以使用linux bash核心实用程序 split

split -b 1M -d  file.txt file 
Run Code Online (Sandbox Code Playgroud)

请注意,MMB两者都可以,但大小不同.MB为1000*1000,M为1024 ^ 2

如果要按行分隔,可以使用-l参数.

UPDATE

a=(`wc -l yourfile`) ; lines=`echo $a/12 | bc -l` ; split -l=$lines -d  file.txt file
Run Code Online (Sandbox Code Playgroud)

Kirill建议的另一种解决方案,您可以执行以下操作

split -n l/12 file.txt
Run Code Online (Sandbox Code Playgroud)

请注意,是l不是one,split -n有几个选项,比如N,k/N,l/k/N,r/N,r/k/N.

  • 或者只使用split -nl/12 file.txt来获取12个文件,按行分割 (3认同)

sch*_*oon 13

John的回答不会像OP那样产生.txt文件.使用:

split -b=1M -d  file.txt file --additional-suffix=.txt
Run Code Online (Sandbox Code Playgroud)

  • 这非常有帮助 `--additional-suffix=.txt` (5认同)