一、环境说明

某次项目需求中,在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. react中使用react-transition-group(CSSTransition)

    https://blog.csdn.net/sophie_u/article/details/80093876

  2. HITsz 数据库笔记

    这是 HITsz 数据库笔记,欢迎到我的 GitHub 上查看,有笔记说明和源码,作业和实验报告,希望对你有帮助 博客园显示图片异常 数据库基本概念 数据抽象 通过抽象来对用户屏蔽复杂性,以简化用户与 ...

  3. iframe页面总是提示需要重新登录怎么办

    原文链接:iframe页面二次登录问题 生产问题 问题背景 由于历史原因,公司内部系统有一些页面是基于iframe嵌入的其他系统的页面,之前一直运行正常,最近不知什么原因接连出现访问所有iframe页 ...

  4. test_1 计算字符串最后一个单词的长度,单词以空格隔开

    题目描述:计算字符串最后一个单词的长度,单词以空格隔开.  输入描述: 一行字符串,非空,长度小于5000. 输出描述: 整数N,最后一个单词的长度. #coding=utf-8 str = raw_ ...

  5. webstorm 配置git代码项目管理工具

    1.下载最新的webStrom11安装包安装 https://confluence.jetbrains.com/display/WI/Previous+WebStorm+Releases/ 2.破解w ...

  6. Ajax_Post用法

    Ajax_Post用法 post方法的用法其实跟get是大同小异的 唯一不同的地方就是我们需要修改server.js的文件 只需要将get修改为post即可 那么我为了方便操作我这里选择的是直接在下面 ...

  7. 【Kafka】基于Windows环境的Kafka有关环境(scala+zookeeper+kafka+可视化工具)搭建、以及使用.NET环境开发的案例代码与演示

    前言:基于Windows系统下的Kafka环境搭建:以及使用.NET 6环境进行开发简单的生产者与消费者的演示. 一.环境部署 Kafka是使用Java语言和Scala语言开发的,所以需要有对应的Ja ...

  8. 八数码问题(8-Puzzle Problem)

    八数码问题(8-Puzzle Problem) P1379 八数码难题 - 洛谷 题目概述:在 \(3 \times 3\) 的棋盘上摆放着 \(8\) 个棋子,棋子的编号分别为 \(1\) 到 \( ...

  9. nginx 和uwsgi的区别与作用

    在介绍nginx和uwsgi的区别和作用之前我们先介绍一下几个概念 1.WSGI WSGI的全称是Web Server Gateway Interface(Web服务器网关接口),它不是服务器.pyt ...

  10. SpringBoot整合Nacos自动刷新配置

    目的 Nacos作为SpringBoot服务的注册中心和配置中心. 在NacosServer中修改配置文件,在SpringBoot不重启的情况下,获取到修改的内容. 本例将在配置文件中配置一个 cml ...