今天需要把乙個2百萬的號碼檔案按行分割成500/個的小檔案,當然用linux來做很方便:
首選split:
# split --version
split (coreutils) 5.2.1
written by torbjorn granlund and richard m. stallman.
我的版本支援按行分割:
split -l 500 m.txt -d fg
-d引數指定了分割後的檔案用數字來命名,並用fg作為字首,如果不用-d引數,則會生成xaa,xab這樣的字母名。如果不指定字首,則會用x作為預設字首。
其次用awk,這個是我比較熟悉的方法:
gawk '}' m.txt
當然windows下還可以用批處理來實現:
忽略空行
@echo off & setlocal enabledelayedexpansion
set m=1
for /f "delims=" %%a in (a.txt) do (
if !n! geq 100 set n=0 & set/a m+=1
echo %%a>>a_!m!.txt
set/a n+=1
)
保留空行
@echo off & setlocal enabledelayedexpansion
set m=1
for /f "delims=" %%a in ('findstr /n .* a.txt') do (
if !n! geq 100 set n=0 & set/a m+=1
for /f "tokens=1* delims=:" %%i in ("%%a") do echo.%%j>>a_!m!.txt
set/a n+=1
)
本文和[url]完全相同,我搜尋批處理方法的時候找到的。自己也記錄一下,現在的記憶力越來越不好了。
shell指令碼分割檔案成相同行數的檔案
使用shell指令碼將testfile.txt檔案 共7800行 分割成13個檔案,每個檔案600行,檔名的字首是splitfile root mx1 home sysadmin zhaoyj cat testfile.txt wc l 7800 指令碼如下 root mx1 home sysadm...
利用shell指令碼對大檔案進行分割
有系統運維的過程中,日誌檔案往往非常大,這樣就要求對日誌檔案進行分割,在此特用shell指令碼對檔案進行分割 方法一 其中httperr8007.log為你想分割的大檔案,file file.log 為分割後的檔案,最後為file 1.log,file 2.log,file 3.log 分割完後的每...
shell指令碼利用sed命令分割檔案
前幾天有個需求,網路模組5秒定時傳回領區資訊並寫入檔案,需求為5分鐘後讀取檔案,提取每次傳回的領區資訊中的earfcn和rsrp等,每次傳回的資訊以 為分隔符 檔案格式如下 領區資訊.領區資訊.領區資訊.領區資訊.領區資訊.提取資訊前要先把每5秒傳回的資訊分割,然後再提取,所以就寫了一下的指令碼來提...