Diff 与多个文件的交集

Diff 与多个文件的交集,diff,intersection,comm,Diff,Intersection,Comm,我有4个文本文件,其中每个文件都有一列数据(每个文件中约2000行)。我试图做的是比较所有文件,并确定不同文件之间的重叠。因此,我想知道什么在文件1中而不是其他3个文件,什么在文件2中而不是其他3个文件,什么在文件1和文件2中,等等。最终目标是制作一个带有4个重叠圆圈的维恩图,显示文件之间的各种重叠 我一直在绞尽脑汁想办法做到这一点。我一直在使用comm和diff命令,但在处理所有文件时遇到了问题。有人对如何做到这一点有什么建议吗 谢谢你的帮助和建议 假设有4个文件名为a b c d 存在于文件

我有4个文本文件,其中每个文件都有一列数据(每个文件中约2000行)。我试图做的是比较所有文件,并确定不同文件之间的重叠。因此,我想知道什么在文件1中而不是其他3个文件,什么在文件2中而不是其他3个文件,什么在文件1和文件2中,等等。最终目标是制作一个带有4个重叠圆圈的维恩图,显示文件之间的各种重叠

我一直在绞尽脑汁想办法做到这一点。我一直在使用comm和diff命令,但在处理所有文件时遇到了问题。有人对如何做到这一点有什么建议吗


谢谢你的帮助和建议

假设有4个文件名为a b c d

存在于文件a中但不存在于任何其他文件中的行(我假定^是任何文件中都未使用的字符):

所有线路中存在的线路:

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

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