linux下shell指令碼切割大檔案為多個小txt檔案

來源:互聯網
上載者:User

解決方案:

1. 先使用split命令切割大檔案,每個小檔案儲存100萬行

split 參數:

-b  :後面可接欲分割成的檔案大小,可加單位,例如 b, k, m 等;
-l  :以行數來進行分割;

#按每個檔案1000行來分割除

split -l 1000 httperr8007.log httperr
 
httpaa,httpab,httpac ........
 
#按照每個檔案100K來分割

split -b 100k httperr8007.log http
 
httpaa,httpab,httpac ........

2. 遍曆所有100萬行檔案,逐個建立目錄再切割成1萬行小檔案

#!/bin/bash
 
bigfile="1.txt"
split -l 1000000 $bigfile text
 
currdir=1
for smallfile in `ls | grep "text*"`
do
    linenum=`wc -l $smallfile | awk '{print $1}'`  
    n1=1  
    file=1
 
    savedir="$smallfile$currdir"
    if [ ! -d "$savedir" ]
    then
        mkdir $savedir
    fi
 
    while [ $n1 -lt $linenum ]  
    do 
        n2=`expr $n1 + 9999`  
        sed -n "${n1},${n2}p" $smallfile > $savedir/text$file.txt
        n1=`expr $n2 + 1`  
        file=`expr $file + 1`  
    done
 
    currdir=`expr $currdir + 1`
done

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.