LINUX下把多行檔案合併成一行,並組裝成SQL
阿新 • • 發佈:2019-01-07
先說一下適用的場景,市場部那邊希望看到某些商品中“黃牛”使用者的活動情況,以及“黃牛”使用代金券的情況,然後發一個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強大的處理文字的功能就顯示出來了。