Linux 是否有一种方法可以一次比较N个文件,并且只为每个文件保留唯一的行? 背景
我有五个文件,我正试图使彼此相对唯一。换句话说,我想使每个文件中的文本行彼此没有共同之处 尝试解决方案 到目前为止,我已经能够运行grep-vf命令,将一个文件与其他4个文件进行比较,如下所示:Linux 是否有一种方法可以一次比较N个文件,并且只为每个文件保留唯一的行? 背景,linux,file,Linux,File,我有五个文件,我正试图使彼此相对唯一。换句话说,我想使每个文件中的文本行彼此没有共同之处 尝试解决方案 到目前为止,我已经能够运行grep-vf命令,将一个文件与其他4个文件进行比较,如下所示: grep-vf file2.txt file1.txt grep-vf file3.txt file1.txt 这使得它可以打印出文件1中不在文件2或文件3中的行,以此类推。。但是,这会变得很麻烦,因为我需要对所有文件的超集执行此操作。换句话说,要真正地将每个文件减少为仅在该文件中的文本行,我必须将每
grep-vf file2.txt file1.txt
grep-vf file3.txt file1.txt
这使得它可以打印出文件1中不在文件2或文件3中的行,以此类推。。但是,这会变得很麻烦,因为我需要对所有文件的超集执行此操作。换句话说,要真正地将每个文件减少为仅在该文件中的文本行,我必须将每个文件组合到grep-vf命令中。考虑到这听起来很麻烦,我想知道
问题:
linux中查找每个文件中与所有其他文件互斥的文本行的命令/命令系列是什么?您可以执行以下操作:
awk '!a[$0]++ { out=sprintf("%s.out", FILENAME); print > out}' file*
这将把uniq in
文件
中的行写入文件.out
。每一行都将写入第一次出现在其中的关联输入文件的输出文件中,随后该行的重复项将被抑制。不清楚您想要什么。如果N==2,并且每个文件都相同,您希望结果为空,还是希望每一行在其中一个文件中只显示一次?在这种情况下,是要删除其中一个文件,还是要截断其中一个文件,还是要在它们之间分配行?@williampersell我希望每行在其中一个文件中只显示一次。他们应该仍然在那里,没有共同的立场。