還在複製貼上?這才是合併多個Excel工作表最簡方法,shell程序的cat指令『秒速』完成

準備進行數據分析時,不時會遇到要先把多個excel合併成一份的場景,比如說

  • 分析採購銷售等ERP數據,公司有10家供應商,每個供應商一個表格
  • 分析廣告投放效果,每個年-月一個表格
  • 資料庫查詢出100W筆,但導出限制10W筆,只好分批10張導出

為了要把這些分散的資料統整起來分析,所以第一步就是合併到一張表上。

首先最廣泛的作法就是打開每一個excel,對資料進行control+C+V,10個excel還好,但如果有100個Excel難道要重複C+V 100次嗎?耗費的工作時間大概就是幾小時的重複勞動了。

因此懂的分析工具的朋友,會借助R或Pythone把csv檔案read進去,透過rbind的合併。當然如果遇到上述100個文件的話,那也是一個繁瑣的工作。因此再進階一點,可以寫一個for循環指令,遍歷檔案的文件進行合併。

透過R或python這個寫代碼的方法,已經比複製+貼上大大增加效率了。但對於非專業分析的朋友,還是有一點門檻

  • 安裝R/python的門檻
  • 忘記set 工作環境setwd()
  • 安裝包的版本可能的失敗

所以有沒有更方便、更快的方法呢?今天介紹透過shell的cat指令,只要幾個字母/符號即可完成上述步驟。先瞧瞧cat的說明:

cat 指令是將每個檔案依照順序讀取並把內容送到標準輸出(螢幕)。 例如,鍵入cat filename 可將檔案filename 的內容在螢幕上顯示。 若無給予檔名或是使用引數時,則cat 指令會從標準輸入(鍵盤)讀取資料。 如此可將檔案file1、file2 合併的結果依指定的順序放到檔案file3 中。

步驟零_說明:

假設我有3個csv要合併,分別是bind_01,bind_02,bind_03,我希望他們合併並成為新的檔案,檔案名叫bind_all

步驟一 :把要合併的文件放到同一個資料夾

我在桌面(Desktop)目錄中,創建一個檔案夾,命名為shell_test,並且把bind_01,bind_02,bind_03這三個文件拖進去。

Screen Shot 2020-10-24 at 4.14.51 PM

步驟二:打開終端機(terminal):

mac的話在finder中,打開「/應用程式/工具程式」,或是spotlight搜一下就可以找到 (在 Mac 上打開或結束「終端機」),開啟後我們就可以在terminal中開始輸入指令了。

Step2.1:指定是在哪個目錄的文件

例如步驟一我說我的文件放在Desktop中,文件名是test_shell,輸入cd ~ +路徑,其中路徑就是圖片紅匡。(注意 cd跟 ~ 中間要空格)

 cd ~/Desktop/shell_bind

Step2.2 :double確認一下該路徑有哪些文件

輸入ls 來double確認一下該路徑有哪些文件,是不是我要合併的那些excel(可以不需要此步驟)

Step2.3:輸入cat指令

 cat * >  bind_all.csv

其中*符號表示該目錄下所有文件, cat表示合併 ,>表示合併後output的文件。

步驟三:完成了..

當step2.3按下Enter鍵後,再回到檔案夾就可以看到創建的bind_all已經在檔案夾中了

當然如果你只是要合併文件夾中的某幾個csv,也是可以的。例如我只要bind_01,bind_02合併成bind_0102

 cat bind_01.csv bind_02.csv > bind_0102.csv

詳細說明可以參閱該文檔:The cat Command

對「還在複製貼上?這才是合併多個Excel工作表最簡方法,shell程序的cat指令『秒速』完成」的一則回應

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.