Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 是否有一种方法可以一次比较N个文件,并且只为每个文件保留唯一的行? 背景_Linux_File - Fatal编程技术网

Linux 是否有一种方法可以一次比较N个文件,并且只为每个文件保留唯一的行? 背景

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命令,将一个文件与其他4个文件进行比较,如下所示:

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我希望每行在其中一个文件中只显示一次。他们应该仍然在那里,没有共同的立场。