1. 程式人生 > >LINUX下把多行檔案合併成一行,並組裝成SQL

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'\t' '{print $1}'  ;

第三,把第一列以逗號分隔,tr '\n' ',' ;

第四,把第三步中的結果前後加上左右括號,sed 's/^/(/'。

把這四步組在一起,執行:sed '1d' ids.txt | awk -F'\t' '{print $1}' | tr '\n' ',' | sed 's/,$/);/' | sed 's/^/(/' > ok.txt

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

然後再寫個sql和這個檔案拼接上就OK了。此處對於資料量小的時候效果不明顯,當處理幾千萬資料,一個文字有幾個G的時候,

LINUX強大的處理文字的功能就顯示出來了。