zoukankan      html  css  js  c++  java
  • LINUX下把多行文件合并成一行,并组装成SQL

       先说一下适用的场景,市场部那边希望看到某些商品中“黄牛”用户的活动情况,以及“黄牛”使用代金券的情况,然后发一个excel文件过来,拿到文件先复制到notepad++中,格式类似:

    idname price
    1name1 price1
    2name2 price2
    3name3 price3
    4name4 price4
    5name5 price5
    6name6 price6
    7name7 price7
    8name8 price8
    9name9 price9

    查询的时候根据ID查询,所以要把所有的ID组织到一行中,并写成(1,2...,8,9)的格式,这需要做如下件事:

    第一,删除第一行标题,sed '1d' ids.txt  ;

    第二,只显示第一列, awk -F' ' '{print $1}'  ;

    第三,把第一列以逗号分隔,tr ' ' ',' ;

    第四,把第三步中的结果前后加上左右括号,sed 's/^/(/'。

    把这四步组在一起,执行:sed '1d' ids.txt | awk -F' ' '{print $1}' | tr ' ' ',' | sed 's/,$/);/' | sed 's/^/(/' > ok.txt

    就得到了(1,2,3,4,5,6,7,8,9);

    然后再写个sql和这个文件拼接上就OK了。此处对于数据量小的时候效果不明显,当处理几千万数据,一个文本有几个G的时候,

    LINUX强大的处理文本的功能就显示出来了。



  • 相关阅读:
    bzoj4513: [Sdoi2016]储能表
    bzoj4000: [TJOI2015]棋盘
    bzoj3067: Hyperdrome
    bzoj4943: [Noi2017]蚯蚓
    bzoj4044: [Cerc2014] Virus synthesis
    bzoj3676: [Apio2014]回文串
    bzoj4543: [POI2014]Hotel加强版
    bzoj1921: [Ctsc2010]珠宝商
    bzoj4754: [Jsoi2016]独特的树叶
    作图的配色
  • 原文地址:https://www.cnblogs.com/bbsno1/p/3271523.html
Copyright © 2011-2022 走看看