管理跨文件的重复行

管理跨文件的重复行

我正在生成同一目录中 5 个文件之间的所有公共/重复行

sort *.txt | uniq -d > output.txt

我需要output.txt与 File1.txt 合并(以便添加任何不重复的内容),但是在 File2.txt 的其他地方,如果出现重复行,则需要将其删除。

有什么指点吗?使用Debian

编辑:将输出与 File1 合并很简单

cat output.txt >> File1.txt

然后用正则表达式删除后面的重复项。

答案1

您可以cat这两个文件(输出和file1.txt),然后仅使用uniq(无开关)查找uniq行,最后将结果写回file1.txt

例子:

$ cat output.txt
Line1
$ cat file1.txt
Line1
Line3
Line4
$ echo "$(cat output.txt file1.txt |sort |uniq)" >file1.txt
$ cat file1.txt
Line1
Line3
Line4

如果您希望完全删除“Line1”并且不保留一次,请使用 uniq -u。

$ echo "$(cat output.txt file1.txt |sort |uniq -u)" >file1.txt && cat file1.txt
Line3
Line4

对你的 file2 进行类似的操作。

PS:您不能在一次操作中对同一个文件进行 cat 和 write 操作。您可以使用echo $(...)上面的技巧或将cat |uniq输出发送到另一个文件(临时文件),然后将 tempfile 重命名为 file1 ( mv tempfile file1.txt) 或cat tmpfile >file1.txt && rm tmpfile.

另一个解决方案是将 output.txt 附加到 file1.txt ( cat output.txt >>file1.txt) 并用于sed -i删除重复行

相关内容