美文网首页
awk实战3-将一个大文件按月拆成多个小文件

awk实战3-将一个大文件按月拆成多个小文件

作者: 渐悟懂劲 | 来源:发表于2018-10-23 11:17 被阅读0次

    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-单列数据到多列数据的相互转换

    ====本文为原创,转载请注明出处====

    相关文章

      网友评论

          本文标题:awk实战3-将一个大文件按月拆成多个小文件

          本文链接:https://www.haomeiwen.com/subject/nwvozftx.html