[shell]linux使用split切分大文件成为小文件并压缩


概述

该脚本用于切割处理大的文本文件,核心知识点是split函数应用,split使用方法可以参考https://blog.csdn.net/qq_43382735/article/details/115700644


一、shell实现

代码如下:

#!/bin/bash

# 脚本针对大于20M的文件进行处理:将大文件切割(每个20M),
# 切割后的文件命名最后三位是从1开始的升序数字序列,而后将切割文件压缩(小于20M的不压缩)

file_size=`ls -l *.csv | awk '{print $5}'` # 文件大小,单位字节
file_name=`ls -l *.csv | awk '{print $9}'` # 源文件名称,简化为file_name=`ls *.csv`

if [ $file_size -gt 20971520 ];then
  # 切割文件 20M 20971520 一个
  slit -b 20M -d -a 3 $file_name ${file_name:0:21}
  # 删除源文件并将切割出来的文件重命名为CSV
  rm -f $file_name
  tmp_file=`ls ${file_name:0:21}*`
  for t in $tmp_file
    do
    if [ ${t:0-1:1} -eq 9 ];then
        mv $t ${t:0:22}$((${t:0-1:1}+1)).csv
      else
        mv $t ${t:0:23}$((${t:0-1:1}+1)).csv
    fi
  done
  # 将20M的文件插入表头并进行zip压缩(小于20M不压缩)
  for fn in `ls ${file_name:0:21}*`
    do
    sed -i '1i 归属地州|OLT名称|OLT唯一标识ip|OLT归属区域|OLT端口名称|OLT端口标识|采集时间|端口带宽G|总流速Gbps' $fn
    fn_size=`ls -l $fn | awk '{print $5}'`
    if [ $fn_size -gt 20971516 ];then
      zip ${fn:0:24}.zip $fn
      rm -f $fn
    fi
  done
fi

总结

本文使用split将大文本分割成20M每个的小文件并对分割后的文件进行压缩处理,核心就是split函数的应用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值