您可以直接在瀏覽器中將文字檔案依指定的行數分割成多個編號的片段,方法是使用 Text File Splitter。此工具接受一個 TXT、CSV、MD 或 LOG 檔案,大小不得超過 10 MiB,並可讓您將每個片段以獨立的 UTF-8 檔案下載,同時保留原始檔案在磁碟上不變。整個操作完全在本機執行:檔案位元組是透過瀏覽器內建的檔案 API 讀取,絕不會傳送到伺服器,這樣您在取得可預測且已編號的片段時,原始檔案仍維持原樣。對於習慣使用 Notepad++ 來切割大型記錄檔、字典或簡易 CSV 匯出的人來說,這類工具可將手動的「選取、複製、貼到新分頁、另存新檔」流程壓縮成按一次按鈕、每個片段下載一次。唯一的取捨是操作嚴格以行為單位;此工具無法理解 CSV 的引號規則、JSON 的階層結構、Markdown 的區塊邊界或段落結構,因此該使用哪種工具,取決於來源是一份您想切割的扁平清單,還是一份其意義取決於結構形狀的有結構文件。

how to split text file in notepad ++
how to split text file in notepad ++

為何 Notepad++ 在處理特大檔案時會卡住

Notepad++ 開啟特大檔案時比基礎的 Notepad 更順暢,但仍然沒有一個一等指令可以將一個文字檔案依行數分割成 N 個片段。讀者通常會搜尋到的變通方法大致分為三類:點選第一行,按住 Shift,捲動到目標列,使用「Begin/End Select」抓取範圍、複製、開新分頁、貼上、另存新檔;執行「尋找並取代」,每隔 N 行插入一行哨兵字串,然後依該哨兵字串切割;或是安裝外掛。這三種做法一旦遇到行數超過幾十萬行的檔案就會失效,因為捲動鎖定的選取會變得不準確,而對數百 MB 的緩衝區執行正則表達式也可能讓編輯器卡住。即使這些方法成功,也是一次只產生一個片段,且必須手動命名檔案。這正是專用分割工具能填補的落差——可預測的片段、可預測的檔名、單次完成。

不需上傳即可依行數分割文字檔案

/text/text-file-splitter/ 上的瀏覽器型分割工具正是為填補這個落差而存在。您只需指定一個本機檔案、輸入片段大小,按一下即可取得所有已命名、已編號且可個別下載的片段。原始檔案的基底檔名會保留;輸出檔名格式類似 notes-part-001.txt、notes-part-002.txt,依此類推,片段索引會以零補齊,讓檔案排序正確。無論您上傳的副檔名是哪一種格式,片段內容都會在每個片段內重新編碼為純 UTF-8,而在分割過程中,CRLF、單獨的 CR 和單獨的 LF 都會被識別為換行邊界。整個流程不需註冊帳號,任何步驟都不會上傳檔案;檔案在本機頁面上完成讀取、處理與輸出,使用的是瀏覽器的檔案與 Blob API

依行數分割文字檔案的步驟

  1. 在瀏覽器中開啟 Text File Splitter。
  2. 點選檔案選擇器,選擇一個大小等於或小於 10 MiB 的 TXT、CSV、MD 或 LOG 檔案;空檔案或超出上限的檔案會在產生任何片段之前被拒絕。
  3. 在片段大小欄位中輸入 1 到 100,000 之間的整數行數;不接受小數、零、負數或超過 100,000 的數值。
  4. 點選分割按鈕。接著工具會回報其計算的總行數以及產生的片段數量。
  5. 將該行數與您預期的數值進行核對。作為快速檢查,您可以在 Notepad++ 中開啟原始檔,使用「檢視 > 顯示符號 > 顯示行尾字元」並確認總數相符。
  6. 依序點選每個編號的下載按鈕,將對應的片段儲存到您的下載資料夾。每次點選會視需求建立一個暫時性的物件 URL、觸發一次下載,並立即撤銷該 URL。
  7. 在磁碟上保留原始檔案,直到每個片段都已開啟,並確認位於第 N、2N、3N 行等位置的接縫與原始檔案一致。

舉一個具體的例子,一個 1,250 行的檔案以片段大小 500 分割會產生 3 個片段:片段 001 包含前 500 行,片段 002 包含接下來的 500 行,最後一個片段包含剩餘的行數 (1,250 − (2 × 500) = 250 行)。同樣的輸入與同樣的片段大小永遠會產生同樣的字串、同樣的總計、同樣的數量與同樣的零補齊檔名,因此結果是可重現的。

什麼算是一行,以及什麼會在分割後保留

由於工具是依原始的換行邊界切割,而非解析檔案的語法,因此按下分割按鈕之前,值得先了解它如何處理常見的來源怪狀。

來源特性 分割工具的處理方式
LF、CRLF 或單獨的 CR 行尾 三者皆被識別為換行邊界;輸出的片段中,所有行僅以 LF 接合。
縮排、尾端空白、Unicode 字元 在每一個保留的行上原樣保留,包含標點符號與組合記號。
檔案結尾的尾端邊界 算作額外的一個邏輯行,因此單一字元後接 LF 會構成兩行,並可能產生一個空白的最終片段。
原始檔名與副檔名 基底檔名保留;因為結果是純 UTF-8 Blob,每個片段會寫成 base-part-NNN.txt。
含引號換行的 CSV 欄位、JSON 物件、Markdown 區塊、原始碼 落在哪一行就在哪裡切割;不會剖析結構意義,因此單一邏輯記錄可能被分到兩個片段中。
檔案解碼 透過瀏覽器的 File.text API 將位元組解碼為 UTF-8;非 UTF-8 內容可能會以替代字元呈現,建議在目的端應用程式中進行檢視。

何時依行數分割會破壞格式

行與記錄是兩回事。引號內的 CSV 欄位可以合法地包含真正的換行字元,而分割工具無法得知該換行字元是記錄的一部分而非分隔符,因此若切割點落在引號文字內部,它會毫不猶豫地將單一 CSV 列切成兩半。JSON 物件、像是圍欄程式碼區塊的 Markdown 結構,以及原始碼的大括號也是如此:操作是以行為單位,因此任何橫跨多行的結構都可能被打斷。這正是說明文件明確指出此工具不會保留含有內嵌引號換行的 CSV 記錄,也不會偵測段落的原因。對於這類來源,唯一安全的做法是使用了解該語法的格式感知解析器。如果您不確定來源是否能承受行的切割,請先執行一次單行的測試分割,接著測試一個等於您預期最長記錄的片段大小,最後才使用真正的片段大小。

在 Notepad++ 中重新開啟並驗證片段

下載的檔案會以 base-part-001.txt 到 base-part-NNN.txt 的格式進入您常用的資料夾。在 Notepad++ 中開啟片段 001,並開啟「檢視 > 顯示符號 > 顯示行尾字元」,這樣分割工具所使用的 LF 接合點就會以小型行尾符號呈現。透過在編輯器中並排開啟兩個檔案,走到兩個片段之間的接縫處;其中一個片段的最後一行與下一個片段的第一行,應該與您在原始檔案中看到的對應行相符。如果您想在分享前為每一行加上類似「Part 001 of 003:」這類的標頭,在 Notepad++ 中為每一行加上前綴的指南中介紹了相同的做法。混合行尾的來源檔案會變得一致:分割工具在輸出中將所有行以 LF 接合,因此若來源中可見的 CRLF 或混合 CR 標記在分割後全部被標準化,請不要感到意外。

關於檔案大小與重複下載的說明

10 MiB 上限是唯一的輸入硬性限制,因此特大記錄檔與字典無法適用,必須在分割前先進行預先裁剪。一旦片段數量達到數十個或數百個,瀏覽器可能會對每次下載詢問權限;這屬於個別檔案的提示,與您要求的片段數量無關。此工具不會將片段打包成單一封存檔,因為這樣做會引入新的依賴,而且每次下載都是一個在點選時建立、在下次點選前撤銷的暫時性物件 URL,因此不會留下任何殘留。同樣的解碼輸入結合同樣的片段大小永遠會產生完全相同的輸出,因此若下載中途中斷,重新執行流程是安全的。

想深入了解,請參閱 如何在 Notepad++ 中不使用 Compare 來檢查文字差異