一、环境说明

某次项目需求中,在Linux上有批文本文件,文件文件都有几个G大,几千万行的数据。无论在Linux和Windows打开这么大的文件,基本上打开要卡半天,更别说编辑。

因此想到使用split命令对大文件进行切割,再分隔取其中的字段,最后导出文件(保留有用的字段)。

二、split常用命令参数

-a、 --后缀长度=N生成长度为N的后缀(默认值2)
--附加后缀=后缀向文件名附加附加后缀
-b、 --bytes=大小每个输出文件放置大小字节
-C、 --line bytes=每个输出文件的最大行大小字节
-d、 --数字后缀[=FROM]使用数字后缀代替字母;从更改开始值(默认值为0)
-l、 --行数=每个输出文件的行数

三、命令参考示例

##每200万行进行切割,使用数字后缀,后缀的长度为3,即最大999
split -l 2000000 aaaa.txt -d -a 3

四、脚本参考

直接写了个脚本,要用时直接跑下就完成了。这里限制后台并发处理的作用是为了防止文件后台处理时,并发数过多,导致机器卡住(数据量大的情况下还是限制并发数比较好)。

这里其实还可以在加个循环,或者位置变量等,从而批量处理一批大文件,就不用手动执行一个个文件了。shell脚本编写每个人都不同,脚本只进行参考,只提供个简单的思路。

 ##指定需要并发的线程数,根据机器的性能进行修改,不然过多并发数会影响机器性能
thread=20
tmp_fifofile=/tmp/$$.fifo
work=./work
if [ -d $work ];then
cd $work
else
mkdir $work
cd $work
fi
##对原文件进行切割,生成临时文件,文件名为“x001”,“x002”....
split -l 5000000 aaaa.txt -d -a 3 mkfifo $tmp_fifofile
exec 7<> $tmp_fifofile
rm -f $tmp_fifofile for t in `seq $thread`
do
echo >&7
done ##对原文件内容进行截取,再导出为新文件,名为bbbb.txt。原文件是按,进行分隔,根据实际情况修改。
for i in `ls x*`
do
read -u 7
{
cat $i | awk -F, '{print $1","$2","$3","$4","$5}' >> bbbb.txt
echo $i >> dns_data.log
echo >&7
}&
done
exec 7>&-
##最后删除前面分隔的临时文件
find ./ -type f -name "x*"|xargs rm -f

Linux上大文件切割以及批量并发处理的更多相关文章

  1. linux上大文件切割成小文件传输

    使用tar命令进行压缩,使用split进行切割 压缩并分割: tar -zcvf - admin- |split -b 100m -d admin-.tar.gz 解压: 先合并成tar包在解压 ca ...

  2. Ajax+Java实现大文件切割上传

    技术体系:html5(formdata) + java + servlet3.0+maven + tomcat7 <!DOCTYPE html> <html> <head ...

  3. 实战|Linux大文件切割

    一个执着于技术的公众号 日常工作中需要对日志文件进行分析,当日志文件过大时,Linux中使用vim.cat.grep.awk等这些工具对大文件日志进行分析将会成为梦魇,具体表现在: 执行速度缓慢,文件 ...

  4. linux传输大文件

    http://dreamway.blog.51cto.com/1281816/1151886 linux传输大文件

  5. Linux上读取文件

    Linux上读取文件的方法: #!/bin/bash # This is a script for test exec CONFIG_FILE=$ #该脚本传一个文件名为参数 FILE_NO= ech ...

  6. 大文件切割(split)

    split提供两种方式对文件进行切割: 根据行数切割,通过-l参数指定需要切割的行数 根据大小切割,通过-b参数指定需要切割的大小 1.1 根据行数切割 如下以一个3.4G大小的日志文件做切割演示,每 ...

  7. linux上hosts文件如何配置

    linux上hosts文件如何配置 一.什么是host Hosts是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登 ...

  8. windows上用putty从linux上下载文件

    我之前使用putty都是直接从网上下的putty.exe,其实如果想下载windows的mis二进制文件,系统安装的话会包含,pscp.psftp.puttygen等一系列的文件. 今天下从服务器上, ...

  9. PHP搭建大文件切割分块上传功能

    背景 在网站开发中,文件上传是很常见的一个功能.相信很多人都会遇到这种情况,想传一个文件上去,然后网页提示"该文件过大".因为一般情况下,我们都需要对上传的文件大小做限制,防止出现 ...

随机推荐

  1. Hive建表和内外部表的使用

    原文链接: https://www.toutiao.com/i6766784274965201415 一.普通建表方式 create table stu_info( id int, name stri ...

  2. HDU-2010.水仙花数(C语言描述)

    Problem Description     春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: "水仙花数"是指一个三位数,它的各位数字的立方和 ...

  3. HTTP协议层面绕过WAF

    最近也是在一直看过waf相关的资料,本次主要是想写写HTTP协议层面过WAF的一些技巧,来与大家一同探讨 原理 给服务器发送payload数据包,使得waf无法识别出payload,当apache,t ...

  4. 如何提高docker容器的安全性

    一. 概述 Docker 容器一直是开发人员工具箱的重要组成部分,使开发人员能够以标准化的方式构建.分发和部署他们的应用程序.毫无疑问,这种吸引力的增加伴随着容器化技术的相关安全问题.他们可以很容易地 ...

  5. JQuery选择器的使用和分类

    jQuery选择器 id选择器格式 $("#box") //获取标签里的id是box的标签 类选择器格式 $(".a") //获取标签里的类名是a的标签 标签选 ...

  6. 【刷题-PAT】A1112 Stucked Keyboard (20 分)

    1112 Stucked Keyboard (20 分) On a broken keyboard, some of the keys are always stucked. So when you ...

  7. 【记录一个问题】linux+opencv+cuvid解码1080P视频,当使用CUDA核函数的时候,必然崩溃

    崩溃的信息如下: 1 OpenCV(4.1.0-dev) Error: Gpu API call (invalid configuration argument) in videoDecPostPro ...

  8. 与Elasticsearch交互的客户端

    1.访问ES的方式 访问es的方式有两种,一种是http方式,还有一种是java客户端方式. 其中Java客户端又分为:1.1.Node client: 节点客户端实际上是一个集群中的节点(但不保存数 ...

  9. HashMap相关

    final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] ta ...

  10. Hello,find!

    Hello,find! 前言 余幼时,每至除夕,爆竹声声,如雷贯耳,醒于梦中,便知春节将至.与兄长二三人,执摔炮六七只, 玩耍于廷中.出门罢,廷中白雪覆于黄土之上.二三尺之外,见犬窝,余之爱犬趴于其中 ...