LINUX AIX UNIX 大檔案排序問題

2021-05-23 09:45:45 字數 652 閱讀 7629

上週經理讓我在unix環境下 對乙個150m 的txt 的第一列進行排序,組內以前有人寫過乙個程式,

用結構體+冒泡法+共享記憶體 排序,但是後面發現只能對百萬行的資料排序,如果檔案過大,申請不到共享記憶體,

現在機器上一般共享記憶體限制2g。

比較笨的方法是 匯入資料庫,然後order by 再匯出來。但是。。。速度啊。。慢。。還折騰人。。

我想到了用shell ,用sort排序,結果檔案還是過大,sort處理不過來

$ sort -d -t "|" -k 1 cc.txt sort:

fatal error, too many temp files needed

後面到cu論壇發帖,有人提議用perl(http://bbs.chinaunix.net/thread-1802345-1-1.html)

perl -f"/|" -lane '.=$_;}end for(sort keys %h)}' cc.txt

但是申請的記憶體還是不夠用最後,

請教了以前的「半仙」同學(半仙是外號,哈哈,一直很佩服的人啊,仙人一般的存在)

head -n 10000 cc.txt |sort -d -t "|" -k1n cc.txt >aftersort.txt 檔案解決了。

用過shell越發覺shell的強大!

上傳大檔案 關於大檔案上傳

js計算檔案md5使用spark md5.js,據說這個庫使用的是世界上最快的md5演算法。js對檔案切片並使用ajax上傳切片 let size file.size 獲取檔案大小 const shardsize 1024 1024 塊大小1mb let shardcount math.ceil s...

大檔案拆分

fp e logtest u ex160314.log 原檔名稱 fname e logtest u ex160314 新檔名稱 fsize 1024 1024 1mb,定義每個新檔案的大小 num 1 新檔名後 1 sum 0 每個新檔案的當前大小 with open fp,rb as fo fo...

大檔案上傳

首先先要建好幾個檔案 html裡面 1238 9141589 90php裡面 1 2 username post username 3 1 接收前端傳過來的引數 4 ori file name post filename 原始檔案的檔名 5 file files file 6 tmp name fi...