1 本文适合读者
经常需要将数据拆开合并的读者
2 问题描述
我们经常需要将一个很大的Excel文件(或文本文件)按月拆成一个月一个小文件,举个例子:
源文件 a.txt: 苹果 201801 300 苹果 201802 400 苹果 201804 500 苹果 201806 600 香蕉 201712 350 香蕉 201801 440 香蕉 201802 560 香蕉 201803 490 西瓜 201803 680 西瓜 201804 730 西瓜 201806 820
类似于这样的一张销量表,可能有几十万行数据,如果我们要将它按月份拆成n个文件,你是否就会“筛选月份--复制--粘贴--保存为yyyymm.csv”呢,如果有好几年的数据,你就得重复几十次无聊的操作。
下面就告诉你用一条命令,如何把一个大文件拆成n个小文件。
3 用shell + awk分割文件
for i in {201801..201809};do awk -F"," -v mm=$i '$2==mm' a.txt > $i".csv";done
4 说明
把指定要输出的月份放在一个序列里面 {201801..201809},然后把月份传递给awk,告诉awk要筛选的月份,然后用重定向输出,月份作为文件名。
整个awk包裹在shell的循环中,如果月份比较多,可以参照上一篇文章,把月份做成数组即可。
awk实战2-将shell数组传递进awk的用法
awk实战系列
awk实战1-单列数据到多列数据的相互转换
====本文为原创,转载请注明出处====
网友评论