Linux中大檔案分割的騷操作

2021-10-02 22:43:21 字數 3510 閱讀 7879

日常工作中需要對日誌檔案進行分析,當日誌檔案過大時,linux中使用vim、cat、vim、grep、awk等這些工具對大檔案日誌進行分析將會成為夢魘,具體表現在:

1 查閱大檔案之痛

大資料離線處理框架hadoop可以處理這些場景,然而hadoop也需要耗費較長的時間進行計算,而且還需要去編寫mapreduce任務,誠然這種方法帶來更大的難度和挑戰。hadoop中是通過將大檔案切割成多個小檔案,通過多個mapreduce任務做並行處理,linux提供了乙個簡單易用的split工具,可以實現將檔案切割成多個小檔案。

split提供兩種方式對檔案進行切割:

如下以乙個3.4g大小的日誌檔案做切割演示,每乙個檔案按照50000行做切割,指定檔名為split-line,-d引數以數字的方式顯示

右邊滑動檢視完整命令

#原始檔大小#按行切割正在建立檔案"split-line00"正在建立檔案"split-line01"正在建立檔案"split-line02"正在建立檔案"split-line03"正在建立檔案"split-line04"正在建立檔案"split-line05"正在建立檔案"split-line06"正在建立檔案"split-line07"正在建立檔案"split-line08"正在建立檔案"split-line09"正在建立檔案"split-line10"...正在建立檔案"split-line9168"正在建立檔案"split-line9169"正在建立檔案"split-line9170"正在建立檔案"split-line9171"#檢視切割檔案行數確認[root@vm_3_50_centos split]# wc -l split-line0050000 split-line00[root@vm_3_50_centos split]# wc -l split-line0150000 split-line01[root@vm_3_50_centos split]# wc -l split-line917050000 split-line9170[root@vm_3_50_centos split]# wc -l split-line91711020 split-line9171#檢視檔案大小[root@vm_3_50_centos split]# ls -lh split-line0[0-9]-rw-r--r-- 1 root root 14m 1月  17 16:54 split-line00-rw-r--r-- 1 root root 14m 1月  17 16:54 split-line01-rw-r--r-- 1 root root 14m 1月  17 16:54 split-line02-rw-r--r-- 1 root root 14m 1月  17 16:54 split-line03-rw-r--r-- 1 root root 14m 1月  17 16:54 split-line04-rw-r--r-- 1 root root 14m 1月  17 16:54 split-line05-rw-r--r-- 1 root root 14m 1月  17 16:54 split-line06-rw-r--r-- 1 root root 14m 1月  17 16:54 split-line07-rw-r--r-- 1 root root 14m 1月  17 16:54 split-line08-rw-r--r-- 1 root root 14m 1月  17 16:54 split-line09
指定行數後會自動做切割,即達到5000行之後自動切割,通過-d引數檔名會自動以數字的方式命名,切割後,每個檔案大小為14m,此時再對檔案進行分析將會方便邊界很多,同時檔案數量也會很多,可以增加行數的方式進行切割,方便分析。
除了按照行數切割之外,split還支援通過檔案大小進行切割,通過指定-b引數指定檔案大小進行切割,檔案大小單位支援k, m, g, t, p, e, z,如下以切割為500m演示檔案切割過程

右邊滑動檢視完整命令

正在建立檔案"split-size00"正在建立檔案"split-size01"正在建立檔案"split-size02"正在建立檔案"split-size03"正在建立檔案"split-size04"正在建立檔案"split-size05"正在建立檔案"split-size06"[root@vm_3_50_centos split]# ls -lh split-size0*-rw-r--r-- 1 root root 500m 1月 17 17:03 split-size00-rw-r--r-- 1 root root 500m 1月 17 17:03 split-size01-rw-r--r-- 1 root root 500m 1月 17 17:04 split-size02-rw-r--r-- 1 root root 500m 1月 17 17:04 split-size03-rw-r--r-- 1 root root 500m 1月 17 17:04 split-size04-rw-r--r-- 1 root root 500m 1月 17 17:04 split-size05-rw-r--r-- 1 root root 444m 1月 17 17:04 split-size06split是使用者將大檔案切割為多個小檔案,如果需要將多個小檔案合併為乙個檔案怎麼處理呢?可以使用檔案重定向方式實現,如下演示兩個小檔案合併為乙個檔案

右邊滑動檢視完整命令

[root@vm_3_50_centos split]# cat split-size01 split-size02 >two-file-merge[root@vm_3_50_centos split]# ls -lh two-file-merge-rw-r--r-- 1 root root 1000m 1月  17 17:20 two-file-merge
合併方式通過讀取檔案的方式+輸出重定向,對於大檔案一樣會存在效能的問題,建議根據需要使用。

本文**:

linux 分割大檔案

你曾經是否想要把乙個大檔案分割成多個小檔案?比如乙個5gb日誌檔案,我們需要把它分成多個小檔案,這樣我們才有可能使用普通的文字編輯器讀取它。有時我們需要傳輸20gb的大檔案到另一台伺服器,這就需要我們把它分割成多個檔案,這樣便於傳輸資料。下面我們來通過五個例項來講解它。split命令分割檔案成每個檔...

linux 大檔案分割 split

1,split b 100m d a 3 test.log small test log 結果 small test log 001 small test log 002 small test log 003 每個檔案的大小為100mb 2,split b 100m test.log small t...

Linux下分割大檔案

在排查專案問題的時候,日誌檔案是很有參考價值的。但是如果專案執行時間比較久,產生的日誌可能是海量的,如果需要檢視較大日誌檔案就會很麻煩,我們可以使用linux提供的split命令,將較大的日誌檔案切割為小檔案,方便我們檢視日誌檔案,進行問題的定位。1.切割檔案 1 使用split分割大檔案 原檔案為...