2015-03-31 2 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"} 

Что мне нужно сделать, это:

Проверьте, если BASE_ID из документа 1 существует в любой из строк документа 2.

Если существует, получите список base_id и строку

Если этого не происходит, получите только список base_ids.

Каков наилучший способ сделать вышеуказанное сравнение в EXCEL? Если не excel, есть ли образцы образцов сценариев, на которые я могу смотреть?

Любая помощь приветствуется.

Благодаря

+1

не уверен в чтении формата excel, но если вы можете сохранить их как csv, вы можете легко проверить это с помощью bash. –

+1

Предположим, что у вас уже есть способ прочитать файлы excel: почему бы не разобрать документ 2 и сохранить необходимые данные в словаре, т. Е. 'Var dict = {}', что проще искать при сопоставлении base_id в 1-м документе ? Недостатком этого подхода является высокая нагрузка на память, но я думаю, что это неизбежно .... (если ваши файлы не индексируются/не сортируются) – TimeString

+0

@ArnonZilca Да, у меня есть это в формате csv. Можете ли вы порекомендовать скрипт samle/link, который делает что-то подобное? – user175084

ответ

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 

Btw, в вашем примере ни один из base_id с существовать в file2.

Смежные вопросы