我的文件a.txt,裡面有1萬多行,我想用批處理,每1000行就分別形成一個文本文件並保存到當前文件夾,文件名可為數字序號1.txt,2.txt,3.txt.....該怎麼做?


Linux 系統下直接用 split 命令輕鬆解決(注意版本應該在 8.16 以後):

split -a 1 -d -l 1000 --additional-suffix=.txt a.txt ""

如果是 OSX 那麼 split 是不行的,因為 OSX 用的是 BSD 的 split ,不支持 --additional-suffix 參數,所以要去裝一個 gnu 的 split:

brew install coreutils

然後用 gsplit:

gsplit -a 1 -d -l 1000 --additional-suffix=.txt a.txt ""

Windows 平台下,你只能用 mingw 或者 cygwin 之類的方案了。如果你要用 GOW(Home · bmatzelle/gow Wiki · GitHub)不是不可以,但是 GOW 的 split 是 5.3 的,沒有 --additional-suffix 參數,當然你也可以先切了然後重命名。

當然用 awk 之類更高級點的工具也可以,比 split 難點。甚至用 perl、python、lua 之類的腳本語言也是可行的,就是沒有那麼直接。


linux下可以用split命令 win下不清楚了-。-


土法鍊鋼呀,這個也就十次就搞定了,還寫程序,麻煩不?


用文本編輯器打開,拷貝粘貼保存10次不可以嗎?


我以前遇到一個基本這一模一樣,但還複雜一點的問題,我不知道是多少行要分到一起。我是自己用c#寫了一小段代碼解決了。

詳細說一下,我是做文本分類的時候,用貝葉斯分類器,找到了一個訓練的語料庫。就是一個文件,有1700多行,一行是一篇文章。很多類別的文章都放在一個txt文件里,我不知道一個類別的有多少行。打開文件像是這樣的:

所以我寫了代碼來自動分成我需要的樣子,分好類之後是這樣的,總共八個類別,每個類別大概幾百個txt文件:

下面是打開某一個文件的樣子:

然後,我的代碼是用C#寫的,也是很簡單的文件讀寫。代碼貼在下面了:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace ConsoleApplication1
{
class Program
{

static void Main(string[] args)
{
Program p = new Program();
string oldname="";
string path = "E:\10train.txt";
int index = 1;
StreamReader sr = new StreamReader(path, Encoding.UTF8);
String line;
while ((line = sr.ReadLine()) != null)
{
if (line.IndexOf("。") &> 0)
{
string name = line.Substring(0, line.IndexOf(" "));
if (name != oldname)
{
oldname = name;
index = 1;
}
string str = line.Substring(line.IndexOf(" ") + 1, line.LastIndexOf("。") - line.IndexOf(" "));
p.Write(str, name,index);
index++;

}
}
Console.WriteLine("ok");
Console.ReadLine();
}

public void Write(string text,string path,int index)
{
Directory.CreateDirectory("E:\new" + path);
FileStream fs = new FileStream("E:\new"+path+""+index+".txt", FileMode.Create);
StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);
sw.Write(text);
sw.Close();
fs.Close();
}
}
}

代碼寫的不太規範。。~題主可以根據這個代碼改一改,滿足自己的需要就行。


一萬多行自己手動貼貼也就兩分鐘的事……


小說切割器 可以百度下 挺好用的


記得好像有個專門的軟體實現這一功能。我當時好像把幾百萬的數據切割了。好像還有一個.dat可以把分開的txt合在一起。可以找找,我在百度搜到的。

很久前的事,記不大清楚了,勿怪。


這不是一段代碼的事情嗎?


可以用Matlab。

從文件一行一行的讀入,再一行一行的寫入另一個文件,一邊寫一邊計數值加一,加到1000,重新新建一個文件,計數值重置,接著寫。直到原文件的行數讀到末尾。

具體的代碼,你可百度一下就知道了。


推薦閱讀:

UltraEdit 是PHP 的主流工具嗎?現在職業PHP 程序員通常用什麼編程工具?
程序員喜歡從0開始計數,那為什麼程序的行號都是從1開始?
為什麼用 EmEditor 的人不多?
Markdown中插入圖片有什麼技巧?
Sublime text 和 vim 有什麼功能是用 UltraEdit 無法實現的?

TAG:文本編輯器 | 文本挖掘 | 文本文檔TXT |