2014-01-29 18 views
0

У меня есть 4 текстовых файла, в которых каждый файл имеет один столбец данных (~ 2000 строк в каждом файле). То, что я пытаюсь сделать, - сравнить все файлы и определить, что такое совпадение между разными файлами. Таким образом, я хотел бы знать, что находится в файле1, но не в других трех файлах, а что есть в файле2, но не в других 3, что есть только в файлах1 и файле2 и т. Д. Конечной целью является создание диаграммы Венна с 4 перекрывающиеся круги, показывающие различные совпадения между файлами.пересечение с несколькими файлами

Я сгребал свой мозг, пытаясь понять, как это сделать. Я играю с командами comm и diff, но у меня проблемы с этим со всеми файлами. У кого-нибудь есть предложения по тому, как это сделать?

Спасибо за любую помощь или предложения.

ответ

0

Предполагая, что 4 файла с именем ABCD существующих в файл а, но не в каком-либо из других

линий (я предполагаю, что^является символ не используется ни в одном из файлов):

for l in `cat a | sort | uniq`;do echo $l^`grep -c $l b c d`;done | grep 'b:0 c:0 d:0$' | cut -d\^ -f1 

линия существующей во всех из них:

for l in `cat a | sort | uniq`;do echo $l^`grep -c $l b c d`;done | grep 'b:[1-9]* c:[1-9]* d:[1-9]*$' | cut -d\^ -f1 

...

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