2015-03-31 108 views
-2

我有兩個非常巨大的excel文檔。比較2個excel文檔

下面只是其中的一個數據示例。

文件1包含:

base_id 
bd9ce21c-bc57-4e21-adf9a9693cbc 
5b0a3d79-ff6a-41fd-a28aa6a92164 
b7d80042-1fcf-4661-21d7dd5b1fbd 
B211B098-0544-4CDF-A2F93EAD22A4 
4FB55FE5-AE6A-425F-8B31E345181A 

文獻2包含:

path_id     gate_no count text_id 
54ecfc619d1333b86a3a9cd9 3816 0 {"abcd":"50C53378-5833-4827-9C2F-3211D3F42F13" abcd_tub:"831e590de0cc185248f4208fc5d5ee89d2d" abcd_cub:"1537fe51004bae1e71480b154372"} 
54ecfc619d1333b86a3a9cd9 3005 0 {"bolt":"66db1807f1e4a072744a77fd8429b5" mega:"a1cd73b41d6b3eae97dbbdd76e323a44ab5140"} 
54ecfc619d1333b86a3a9cd9 2595 0 {"bolt":"c58634ccdcb5e81eb0b447679b756" mega:"32b74bf7024944b457c69c000e44d43"} 
54ecfc619d1333b86a3a9cd9 2220 0 {"bolt":"acf98549461b87bcfe2c5190d6c" mega:"2c1c788440d85ea70597ce135ccf2316748f"}  
54ecfc619d1333b86a3a9cd9 2160 0 {"abcd":"16F8E7-F395-4551-B8C7-5FC8B" abcd_tub:"a5301e4dfc6bad809a2917f495fc6f7" abcd_cub:"4e5da03ffb35a0f17726acb60c8dc"} 

什麼,我需要做的是:

檢查是否從文件1 BASE_ID在任何行的存在

如果存在,則獲取base_id列表和行

如果不存在,請僅獲取base_ids的列表。

什麼是在EXCEL中進行上述比較的最佳方法? 如果不是excel,是否有我可以看的樣本腳本樣本?

任何幫助表示讚賞。

感謝

+1

不確定讀取excel格式,但如果您可以將它們保存爲csv,您可以使用bash輕鬆檢查。 – 2015-03-31 22:24:15

+1

假設您已經有一種方法來讀取excel文件:爲什麼不解析文檔2並將必要的數據存儲在字典中,即'var dict = {}',這在匹配第一個文檔中的base_id時更容易查找?這種方法的缺點是高內存開銷,但我認爲這是不可避免的....(除非你的文件被索引/排序) – TimeString 2015-03-31 22:26:23

+0

@ArnonZilca是的我有它的CSV格式。你能推薦一個腳本samle /鏈接做類似的事嗎? – user175084 2015-04-01 15:29:49

回答

1

我以爲你的文件看起來完全一樣,他們在這個問題(他們可以有逗號,而不是標籤 - 但他們需要的文本,而不是在Excel格式)。

這不是很有效,但如果文件不是很長,那應該不重要。
希望我理解你想要什麼正確實現:

#!/bin/bash 

set -e 

file1="file1" 
file2="file2" 

for id in $(tail -n+2 "${file1}"); do 
    if ! grep "${id}" "${file2}"; then 
     echo "${id}" 
    fi 
done 

順便說一下,在你的例子沒有base_id S的file2中存在。