拆分大文件的脚本

有时候需要把一个大文件拆分成几个小文件,由于生产系统上没有split程序,因此自己写了两个脚本来实现该功能。

第一个脚本根据行数来拆分:

#! /bin/bash
#filename my-line-split.sh
#usage: my-line-split.sh 行数 bigfile
#拆分的文件以bigfile.split.1 bigfile.split.2...命名
split_line=$1
file=$2
total_line=$(wc -l <$file)
prefix=$file.split.
i=1
begin_line=1
while [ $begin_line -le $total_line ]
do
    end_line=$(echo "$begin_line+$split_line-1" |bc)
    sed "$begin_line,$end_line!d" $file >$prefix$i
    i=$(echo "$i+1" |bc)
    begin_line=$(echo "$end_line+1"|bc)
done

第二个脚本根据字节数来拆分

#! /bin/bash
#filename my-byte-split.sh
#usage: my-byte-split.sh 字节数 bigfile
#拆分的文件以bigfile.split.1 bigfile.split.2...命名
split_line=$1
file=$2
total_line=$(wc -l <$file)
prefix=$file.split.
i=1
begin_line=1
while [ $begin_line -le $total_line ]
do
    end_line=$(echo "$begin_line+$split_line-1" |bc)
    sed "$begin_line,$end_line!d" $file >$prefix$i
    i=$(echo "$i+1" |bc)
    begin_line=$(echo "$end_line+1"|bc)
done
时间: 2024-10-12 21:25:37

拆分大文件的脚本的相关文章

split、rar拆分大文件

split拆分大文件 系统默认自带有 # split -b 2048m aa aa_ -b n[bkm]  b代表512b,k代表1KB,m代表1M 后面aa表示指定文件前缀 结果为:aa_aa aa_ab 合并拆分文件: # cat aa_aa aa_ab > aa rar拆分大文件 # apt-get install rar # rar a -v2048m aa.rar aa 结果为:aa.part1.rar aa.part2.rar 合并并解压: # unrar aa.part1.rar

【Linux命令】拆分大文件 split -l xxx split -b xxx

linux主机上,将一个大文件切割成N个小文件 (1)按字节拆分  split -b 1m itable_transfer_145028.138.21.log >>>>split -b 1m itable_transfer_145028.138.21.log --------------------------------------- -rw-rw-r--. 1 billapp billapp 1987501 8月 1 14:49 itable_transfer_145028.1

大文件数据库脚本导入解决方案

当客户服务器不允许直接备份时,往往通过导出数据库脚本的方式来部署-还原数据库, 但是当数据库导出脚本很大,用Microsoft SQL Server Management Studio执行脚本时,往往会遇到“内存不足”的提示. 解决办法: 用微软自带的sqlcmd工具,可以导入执行.以SQL Server 2008R版本为例: 第一步:Win+R 键入:cmd 命令,开启命令行工具: 第二步:键入:cd C:\Program Files\Microsoft SQL Server\100\Tool

Linux下拆分大文件

linux split 命令 功能说明:切割文件. 语 法:split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名] 补充说明:split可将文件切成较小的文件,预设每1000行会切成一个小文件. 参 数: -<行数>或-l<行数> 指定每多少行就要切成一个小文件. -b<字节> 指定每多少字就要切成一个小文件.支持单位:m,k -

sqlserver 大文件脚本执行

sqlserver2008中需要执行大文件的脚本,查询分析器中打不开,需要用到sql命令,开始使用osql命令,不过提示对应sqlserver2008中的驱动找不到(具体原因未分析-空闲时在处理),使用sqlcmd可以执行:在DOS中,调用sqlcmd命令,并使用对应选项    sqlcmd    -S  localhost -U sa -P 1   -i "c:\xxx\MySql.sql"

sql大文件拆分导入

一.文件压缩与解压 sql文件比较大,通常会压缩至大概十分之一大小. 1.压缩文件 非打包 tar -czvf test.tar.gz test.sql //压缩 test.sql文件为test.tar.gz(会保留原文件) tar -czvf test.tar.gz test/ //压缩目录下的文件 (不过目录的压缩效果就一般了) 2.列出压缩文件内容 tar -tzvf test.tar.gz rw-r--r-- root/root 0 2010-05-24 16:51:59 test.sq

大文件拆分问题的java实践(附源码)

引子 大文件拆分问题涉及到io处理.并发编程.生产者/消费者模式的理解,是一个很好的综合应用场景,为此,花点时间做一些实践,对相关的知识做一次梳理和集成,总结一些共性的处理方案和思路,以供后续工作中借鉴. 本文将尝试由浅入深的方式表述大文件拆分的问题及不同解决方案,给出的方案不一定是最优解,也并非线上环境论证过的靠谱方式,目的只是在于通过该问题融会贯通io.多线程等基础知识理论.生产环境请慎用. 本文不会逐行讲解代码实现,而注重在方案设计及思路探讨上,但会在文末附上源码demo git地址. 问

大文件按行分离脚本

1 #!/bin/bash 2 #大文件按行数分离成若干小文件脚本 3 4 con_data='db2 connect to db_edp' 5 con_time='db2 "values current timestamp"' 6 con_reset='db2 connect reset' 7 #将要分离的文件名写到此处,其它地方不要改动 8 clear_file=pdm_20160512.txt 9 10 echo $con_data > lianjie.txt 11 ech

linux系统查找大文件脚本

每次遇到服务器磁盘满,都会很苦恼,但有了下面两种方法就可以轻松找到机器中的大文件了, 第一种:du -sh du -sh 当前目录下个文件或目录的大小: du -sh * 显示前10个占用空间最大的文件或目录: du -s * | sort -nr | head 释:-s选项指定对于目录不详细显示每个子目录或文件的大; -h已易读的格式显示指定目录或文件的大小 第二种:find命令(-size) a.在/目录下查找1K的文件,有三种方式: find / -size 2 find / -size