首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

瓜分文件的脚本

2012-09-04 
分割文件的脚本今天需要把一个2百万的号码文件按行分割成500/个的小文件,当然用linux来做很方便:首选split

分割文件的脚本
今天需要把一个2百万的号码文件按行分割成500/个的小文件,当然用linux来做很方便:
首选split:

# split  --versionsplit (coreutils) 5.2.1Written by Torbjorn Granlund and Richard M. Stallman.

我的版本支持按行分割:
split -l 500  m.txt -d fg

-d参数指定了分割后的文件用数字来命名,并用fg作为前缀,如果不用-d参数,则会生成xaa,xab这样的字母名。如果不指定前缀,则会用x作为默认前缀。

其次用awk,这个是我比较熟悉的方法:
gawk '{i=int((NR-1)/500)+1;{print $0>>"fg_"i".txt"}}' 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    )



本文和http://www.cn-dos.net/forum/viewthread.php?tid=41471完全相同,我搜索批处理方法的时候找到的。自己也记录一下,现在的记忆力越来越不好了。

热点排行