一、环境说明

某次项目需求中,在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. Servlet初级学习加入数据库操作(一)

    需要的源代码地址: https://url56.ctfile.com/f/34653256-527822631-2e255a(访问密码:7567) 将页面中的数据逐步替换为数据库管理 准备一个连接数据 ...

  2. CodeForces 519B A and B and Compilation Errors (超水题)

    这道题是超级水的,在博客上看有的人把这道题写的很麻烦. 用 Python 的话是超级的好写,这里就奉上 C/C++ 的AC. 代码如下: #include <cstdio> #includ ...

  3. IPV4地址,子网掩码,子网划分

    转载自https://blog.csdn.net/qq_45108415/article/details/114179407

  4. 程序员必备的编程助手!SmartCoder助你轻松集成HMS Core

    当开发者在集成HMS Core遇到一些疑问时,需要翻阅官网文档,反复查看集成说明或者API调用说明,或者研究GitHub上的开源示例代码,花费较多的时间,在IDE环境和网页浏览器之间反复切换也会耗费很 ...

  5. golang中map原理剖析

    1. golang中的map有自己的一套实现原理,其核心是由hmap和bmap两个结构体实现的 2.  初始化map package main func main() { // 初始化一个可容纳10个 ...

  6. Python的开发环境

    Python的开发环境 在 Python 开发环境中我们能看到很多工具,如 pip .conda .poetry . virtualenv . venv . pyenv 等等.他们是什么,都有什么作用 ...

  7. JVM调优方法

    目 录 目 录 I 诠释JVM调优 1 第1章 JVM内存模型及垃圾收集算法 1 1.1 根据Java虚拟机规范,JVM将内存划分为 1 1.2 垃圾回收算法 1 第2章 内存泄漏及解决方法 2 2. ...

  8. CKKS :Part1,普通编码/解码

    这篇文章,翻译于:[CKKS EXPLAINED: PART 1, VANILLA ENCODING AND DECODING] 主要介绍为CKKS中编码/解码做铺垫,讲一些基础知识 介绍 同态加密是 ...

  9. Flutter 2.10 更新详解

    Flutter 2.10 版已正式发布!虽然⾃ 上次稳定版本发布 以来还不到两个⽉,即使在这么短的时间内,我们也已处理和关闭了 1843 个 Issue,合并了来⾃全球 155 位贡献者的 1525 ...

  10. 2022.02.05 DAY2

    前言 今天陪老姐送对象去安庆了,上午还去了西风禅寺求了个签,第一次拿到中评签,看来今年还需要继续努力哈哈哈.一直到晚上才有时间去做点题目,今天依旧是leetcode. 题目 leetcode 1 两数 ...