我正在生成同一目录中 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
删除重复行