shell脚本按要求拆分文件,并按照指定格式命名

写一个shell脚本,按照每200000行对一个文件进行拆分,拆分之后命名为原始文件_01.csv,原始文件_02.csv

假设原始文件名是data.txt
处理后的结果为:data_01.csv,data_02.csv…
一开始我使用的是split对文件进行拆分:

split -l 200000 data.txt -d -a 2 data_

然后再匹配出所有的结果文件,将其命名为.csv文件。

然后发现结果并不对,查阅split的用法后知道,split切分后的文件默认是从00,01,02或者0,1,2进行添加后缀的。

于是就打算自己写一个万能的模板,管他以后什么需求,都可以实现:
下面是具体的实现:

1.要求以01,02,03…添加后缀:

#查询出文件的总行数
linenums=`wc -l data.txt | awk '{print $1}'`
#行数变量
n1=1
#文件后缀名变量
name1=1
name2=0
#判断行数是否小于总行数
while [ $n1 -lt $linenums ]
do
	n2=`expr $n1 + 199999`
	#使用sed命令对文件进行拆分
	sed -n "${n1},${n2}p" data.txt > data_${name2}${name1}.csv
	n1=`expr ${n2} + 1`
	name1=`expr ${name1} + 1`
	#当文件到达09时,转换成10,也就是每当name1到达10,name2进1
	if [ ${name1} -eq 10 ];then
		name1=0
		name2=`expr ${name2} + 1`
	fi
done

2.以1,2,3为后缀

#查询出文件的总行数
linenums=`wc -l data.txt | awk '{print $1}'`
#行数变量
n1=1
#文件后缀名变量
name1=1
#判断行数是否小于总行数
while [ $n1 -lt $linenums ]
do
	n2=`expr $n1 + 199999`
	#使用sed命令对文件进行拆分
	sed -n "${n1},${n2}p" data.txt > data_${name1}.csv
	n1=`expr ${n2} + 1`
	name1=`expr ${name1} + 1`
done
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值