Если вы работаете в среде Linux, вы можете использовать некоторые команды bash, чтобы выручить вас.
Я думаю, что лучший способ быстро обработать их данные - использовать csv-файлы. Вы можете использовать:
exec sort sheet1.csv
exec sort sheet2.csv
set diff [diff sheet1.csv sheet2.csv]
Редактирование, поскольку это не чистый Tcl:
Допустим, оба ваших csv-файла выглядят так:
sheet1.csv -> a, b, c, d
sheet2.csv -> a, d, c, e
Вы можете загрузить эти файлы, передав их в качестве аргумента в ваш файл Tcl:
myTclFile sheet1.csv sheet2.csv
Внутри вашего Tcl вы можете прочитать их, используя argv :
set list1 [lindex $argv 0]
set list2 [lindex $argv 1]
Хорошей практикой является проверка входных файлов перед их вызовом.
Если порядок файлов не важен, а только тот факт, что они имеют одинаковые данные, вы можете использовать lsort . Тем не менее, чтобы превратить это в фактический список элементов, вместо одной большой строки используйте split :
set list1 [split $list1 ',']
set list2 [split $list2 ',']
Затем вы можете перебирать эти списки так, как хотите. Мое предложение будет использовать foreach . Это будет примерно так (например, если вы хотите перебирать целые списки)
foreach element $list1 {
foreach element2 $list2 {
set hasMatch 0
if {$element == $element2} {
incr hasMatch
break
} else {
continue
}
}
if {!$hasMatch} {
set diff [lappend $diff $element]
} else {
continue
}
}