我的文件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 無法實現的?