按指定行號分割檔案
簡介
有時,為了更輕鬆地處理或傳輸到其他系統,可能需要將大型檔案分割成較小的塊。在 Linux 中,可以使用 `split` 命令根據指定的行數將檔案分割成較小的檔案。
`split` 命令是一個用於將檔案分割成較小檔案的實用程式,這些較小的檔案被稱為塊或片段。`split` 命令讀取輸入檔案,並以指定的大小或指定的行數寫入輸出檔案。預設情況下,`split` 命令建立字尾為 `.x` 的檔案,其中 `x` 是從 `aa, ab, ac` 等開始的字母。
如何使用 split 命令?
要根據行數分割檔案,請使用以下語法:
$ split -l lines file output_prefix
-l 行數 − 指定每個輸出檔案的行數。
檔案 − 你想要分割的輸入檔案。
輸出字首 − 輸出檔案的字首。輸出檔案將被命名為 output_prefixaa、output_prefixab、output_prefixac 等。
例如,要將檔案 bigfile.txt 分割成每個包含 1000 行的塊,並且輸出檔案具有字首 splitfile,請使用以下命令:
$ split -l 1000 bigfile.txt splitfile
這將建立以下檔案:splitfileaa、splitfileab、splitfileac 等。
檔案分割示例
以下是一些使用 split 命令按特定行號分割檔案的示例:
將檔案分割成每個包含 1000 行的塊
要將檔案 **bigfile.txt** 分割成每個包含 1000 行的塊,並且輸出檔案具有字首 **splitfile**,請使用以下命令:
$ split -l 1000 bigfile.txt splitfile
這將建立以下檔案:**splitfileaa、splitfileab、splitfileac** 等。
將檔案分割成每個包含 500 行的塊,從第 100 行開始
要將檔案 **bigfile.txt** 分割成每個包含 500 行的塊,從第 100 行開始,並且輸出檔案具有字首 **splitfile**,請使用以下命令:
$ split -l 500 -d bigfile.txt splitfile 100
這將建立以下檔案:**splitfile00、splitfile01、splitfile02** 等。
使用數字字尾分割檔案
要將檔案 **bigfile.txt** 分割成每個包含 100 行的塊,從第 1000 行開始,並且輸出檔案具有字首 **splitfile** 和數字字尾,請使用以下命令:
$ split -l 100 -d bigfile.txt splitfile 1000
這將建立以下檔案:**splitfile000、splitfile001、splitfile002** 等。
使用不同的字尾分割檔案
要將檔案 **bigfile.txt** 分割成每個包含 2000 行的塊,並且輸出檔案具有字首 **splitfile** 和字尾 **.txt**,請使用以下命令:
$ split -l 2000 --suffix-length=4 bigfile.txt splitfile
這將建立以下檔案:**splitfile0000.txt、splitfile0001.txt、splitfile0002.txt** 等。
分割檔案並指定輸出目錄
要將檔案 **bigfile.txt** 分割成每個包含 1000 行的塊,並且輸出檔案具有字首 **splitfile** 並存儲在輸出目錄中,請使用以下命令:
$ split -l 1000 bigfile.txt output/splitfile
這將在輸出目錄中建立以下檔案:**splitfileaa、splitfileab、splitfileac** 等。
將檔案分割成每個包含 500 行的塊,並將行號儲存在輸出檔名中
要將檔案 **bigfile.txt** 分割成每個包含 500 行的塊,並將行號包含在輸出檔名中,請使用以下命令:
$ split -l 500 --additional-suffix=.txt bigfile.txt splitfile
這將建立以下檔案:splitfileaa.txt、splitfileab.txt、splitfileac.txt 等。行號將包含在後綴中,用句點分隔。例如,splitfileaa.txt 將包含第 1-500 行,splitfileab.txt 將包含第 501-1000 行,依此類推。
替代命令
在 Linux 中,還有一些其他命令可以用於分割檔案,儘管它們可能沒有 `split` 命令的所有選項和功能。`split` 命令的一些替代方案包括:
`csplit` − `csplit` 命令類似於 `split`,但它允許你使用模式或行號來指定分割檔案的位置。例如,要在每次出現模式 "---" 時分割檔案,請使用以下命令:`csplit file /---/`
`awk` − `awk` 命令是一個強大的文字處理工具,可用於根據給定的模式或欄位分割檔案。例如,要將 CSV 檔案分割成每個行一個單獨的檔案,請使用以下命令:`awk -F, '{print > $1".txt"}' file`
`sed` − `sed` 命令是一個文字處理工具,可用於對檔案執行各種操作,包括分割。要根據模式將檔案分割成單獨的檔案,請將 `sed` 命令與 `awk` 命令結合使用。例如,要在每次出現模式 "---" 時分割檔案,請使用以下命令:`sed -n '/---/{h;d};H;${x;s/.*//;p;}' file | awk -F"---" '{print > (NR+1)".txt"}'`
值得注意的是,這些替代方案可能不如 `split` 命令高效或易於使用,並且可能需要更高階的 Linux 文字處理知識。
結論
總的來說,`split` 命令是在 Linux 中根據指定的行數將大型檔案分割成較小塊的有用實用程式。對於需要更輕鬆地處理或傳輸大型檔案的情況,它是一個方便的工具。`split` 命令有幾個選項允許你自定義輸出檔案,包括指定字首、字尾和起始行號。
在 Linux 中,還可以使用其他幾個命令來分割檔案,例如 csplit、awk 和 sed。這些替代方案可能提供更高階的功能或基於模式分割的能力,但它們可能不如 split 命令高效或易於使用。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP