概述
该脚本用于切割处理大的文本文件,核心知识点是split函数应用,split使用方法可以参考https://blog.youkuaiyun.com/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函数的应用。