若要在不上傳的情況下依行數分割文字檔,請選擇一個不超過 10 MiB 的 TXT、CSV、MD 或 LOG 檔,輸入每個分割檔要包含的行數(1 到 100,000 之間的任意整數),然後將每個編號過的區塊以獨立的 UTF-8 TXT 檔下載下來。整個操作透過 Text File Splitter 在您的瀏器中於本機執行,因此來源檔案永遠不會離開您的電腦,也不需要任何帳號。每個輸出檔都會保留原始的行內容,包括縮排、結尾空白、標點符號以及 Unicode 字元,並一律使用標準 LF 行尾,不論來源使用的是 LF、CR 或 CRLF。檔名採用基於原始基本檔名的固定模式,並附加一個三位數的序號,因此您隨時都能知道 part-001、part-002 等等各自代表什麼。當您有一份過大或過於雜而難以作為單一文件處理的純文字檔,並希望將每個區塊作為可獨立開啟、寄送或上傳的檔案時,這個方法就能派上用場。

以行為基礎的分割與以分隔符為基礎的分割
在「分割文字檔」這個主題下,有兩個概念容易被混淆,選錯方式會浪費時間。在 Excel 或 Google Sheets 這類試算表程式中,「文字轉欄」功能會使用逗號、定位點、分號或直立線等分隔符,將單一列分割成多個欄位。列本身保持不變,改變的是每一列內部的欄位。該操作是基於欄位的,而非基於檔案的,對於整理擠在同一個儲存格裡的姓名、日期或地址行確實很有用。
Text File Splitter 的運作方向則不同。它會接收一份已經包含數千列的純文字檔,並將這些列分割成數個較小的檔案,讓每個檔案都更容易寄送、上傳、註解,或在有列數限制的工具中處理。列本身的內容絕對不會被重新排列,改變的只是檔案之間的界線。這是以行為基礎的分塊,而非以欄位為基礎的分割,兩者的差異很重要,因為這兩種操作需要完全不同的工具。如果您需要 Excel 風格、依分隔符進行的欄位分割,您會需要一個能識別分隔符的工具;反之,如果您需要將一個很長的檔案分割成每個 N 行的較小檔案,這個工具正是為此而設計的。
何時以行為基礎的分塊才是正確的選擇
只要您的檔案已經具備您需要的結構,而唯一的問題只是檔案大小,那麼以行為基礎的分塊就是正確的做法。伺服器記錄檔、字幕列、沒有加引號換行的簡單 CSV 匯出、Markdown 筆記以及純文字語料庫都屬於這類情況。如果您可以在任何文字編輯器中開啟該檔案,並在每一行看到有意義的資料列,將它分割成 500 行或 1,000 行的批次,通常就能產生您實際可以處理的檔案。
以下是幾個分塊是較佳選擇的具體情境:將一個 50,000 行的記錄檔分割成十個各 5,000 行的檔案以便逐一檢視;將一長串 URL 或電子郵件地址清單分割成多個上傳檔案,以配合有批次大小限制的工具;將一份 Markdown 文稿分割成章節或小節以便協作;將單行記錄組成的語料庫分割成較小的檔案以便在腳本中進行批次處理;與協作者共享檔案,而該協作者的編輯器在超過特定行數後會變得吃力。在所有這些情況下,每一列都已經是一個自足的單位,目標只是讓每個檔案包含更少的列。只有在單一邏輯記錄合法地橫跨多行的情況下,分塊才會是錯誤的工具,這也是為什麼含有加引號多行欄位的 CSV 檔需要特別小心。
如何在不上傳的情況下依行數分割文字檔
在瀏覽器中開啟 Text File Splitter,並依照下列步驟操作:
- 點擊檔案選擇器,選擇一個 TXT、CSV、MD 或 LOG 檔。檔案大小不得超過 10 MiB。
- 在「每個分割檔的行數」欄位中,輸入一個 1 到 100,000 之間的整數。這是每個輸出區塊將包含的行數。
- 點擊分割按鈕。該工具會在本機處理檔案,並回報總行數以及將產生的分割檔數量。
- 確認總數符合您的預期,然後使用每個分割檔各自的下載按鈕下載編號過的區塊。
- 在您至少開啟過第一個和最後一個分割檔並確認內容無誤之前,請保留原始檔案。
每次下載都會在點擊時建立一個暫時的 Blob URL、觸發一次瀏覽器下載動作,然後立即撤銷該 URL。由於在渲染過程中不會建立任何長效的物件 URL,因此只有在您實際點擊時才會產生各個區塊。選擇不同的檔案或更改行數會清除先前的結果,因此檔名與數量絕對不會與新的設定混淆。如果在要求下載多個分割檔時,瀏覽器詢問是否允許重複下載,請授權一次,之後的分割檔就能正常下載。
此工具如何計算行數以及命名每個分割檔
此分割器採用標準的純文字行界線規則。它會將 CRLF(Windows 樣式)、獨立的 CR(傳統 Mac)以及 LF(Unix 與現代 macOS)辨識為行結束符,並將每一個視為單一界線。如果您的檔案混用了不同的行尾,由於每個被辨識出來的界線都會剛好產生一個邏輯行,計數仍會保持一致。輸出區塊一律以 LF 連接,因此混用行尾的來源在下載檔案中會變得統一。
有一個細微但重要的細節:結尾處的行界線會構成一個最後的邏輯行。如果您的檔案包含單一字元 "a" 後接 LF,則分割器會計算為兩行:"a" 與一個空行。在分割大小為一行的情況下,這會產生一個包含 "a" 的分割檔,以及一個第二個為空的分割檔。這條規則能避免工具悄悄丟棄來源界線,但也意味著一個可被整除的檔案,最後可能會多產生一個空白的分割檔。如果您希望精確預測分割檔的數量,請在提交前檢查檔案結尾是否帶有換行。
檔名遵循固定的模式。原始的基本檔名會保留不變,每個分割檔會獲得一個以三位數補零的序號,並帶有 "part" 字面字串。對於名為 notes.txt 的檔案,輸出會是 notes-part-001.txt、notes-part-002.txt,依此類推。無論輸入的副檔名為何,輸出的副檔名一律為 TXT,因為每個分割檔都是以 UTF-8 文字 Blob 寫入的。相同的解碼輸入與行數永遠會產生相同的字串、相同的行總數、相同的分割檔數量,以及相同的補零檔名,因此輸出是可重現且易於驗證的。
| 來源行尾 | 計算方式 | 輸出區塊使用 |
|---|---|---|
| LF (\n) | 一行 | LF |
| 單獨的 CR (\r) | 一行 | LF |
| CRLF (\r\n) | 一行 | LF |
| 檔案結尾的結尾界線 | 構成一個最後的空邏輯行 | LF |
限制、格式,以及此分割器不會做的事
10 MiB 的上限是為了限制本機解碼與渲染的負擔,並會在任何分割動作開始前進行檢查。空檔案會被拒絕,因為沒有可分割的有意義內容。如果您提交的檔案超過 10 MiB,工具會直接拒絕,而不會產生部分結果。每個分割檔的行數必須是 1 到 100,000 之間的整數;小數、零、負數以及更大的數字也會在事前被拒絕,無效的輸入絕對不會產生部分結果。
此分割器不會驗證您提供之檔案的語法。它接受 TXT、CSV、MD 與 LOG 副檔名,因為這些都是常見的純文字格式,但不會解析 CSV 的引號規則、Markdown 結構或記錄檔格式慣例。一個合法地包含換行的加引號 CSV 欄位,會在欄位中間被切開,造成周圍的分割檔中含有無效的 CSV 片段。JSON、XML、原始碼以及跨多行的 Markdown 結構也會面臨同樣的問題。對於這些格式,請使用懂得將記錄保持完整的格式感知解析器,而非以行為基礎的分割器。
解碼一律以 UTF-8 進行,因為瀏器是透過 File.text 來讀取檔案的。實際上並非 UTF-8 的檔案(例如帶有誤導性 .log 副檔名的 Windows 字碼頁記錄檔)在解碼後可能會出現替換字元。在將各分割檔視為最終結果之前,請先在您打算使用的應用程式中開啟一兩個具代表性的輸出檔確認。這裡沒有伺服器儲存、沒有帳號,也不會保留任何處理紀錄;覽器在本機完成讀取、分割與下載。由於沒有引入新的相依套件,此工具不會建立 ZIP 封存檔;每個分割檔都是個別下載的。
可重現的輸出與一個實作範例
若要將您的預期與工具的結果相互比對,請嘗試使用一個行數已知的檔案。假設您有一份包含 1,000 行內容、且結尾帶有換行的檔案,根據文件中規定的計數規則,這會構成 1,001 個邏輯行。在分割大小為 500 的情況下,將 1,001 除以 500 會得到 2 組完整的 500 行,共 1,000 行,餘數為 1 行。該工具會產生 3 個分割檔:兩個各包含 500 行的分割檔,以及一個包含單一結尾空輯行的第三個分割檔。若沒有結尾的換行,同樣的檔案則只會剛好產生 2 個各 500 行的分割檔。
對同一個檔案使用相同的分割大小執行時,永遠會產生相同的字串、總數與檔名,因此輸出在不同次執行以及不同機器之間都是可重現的。此工具不會重新平衡分割檔、不會依位元組大小分割、不會依字數分割、不會偵測段落,也不會將含有內嵌加引號換行的 CSV 記錄保持在一起;它是一個單純的以行為基礎的操作。每個完整的群組都包含所要求的行數,最後一個群組除外,它包含的是餘數。如果您真正的目標是將一個檔案依行數分成相等的兩半,那麼 「依行數將文字檔對半分割」指南 會以該特定目標為出發點,介紹相同的方法。