gpt4 book ai didi

linux - 仅保留唯一行,搜索整个目录

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:47:14 24 4
gpt4 key购买 nike

背景信息

在我的路由器上工作,所以只有 60mb 可用内存。
我欢迎在 bash 中回答,但 sh 会让我开心。
如果有执行此操作的二进制文件,我不介意将其编译为在我的路由器上运行。

长话短说

我有一个包含文本文件的目录。

我如何确保所有文件之间没有重复行?

例如,如果 a.txtb.txtc.txt 包含行 apple ,它应该只保留在其中之一(无论是哪一个)。

如果您需要详细信息

我有一个脚本在同一目录中下载多个 hosts 文件,由 dnsmasq 使用。

我不想将所有文件合并为一个,而是让它们全部删除重复的主机名。

例如,在

y.txt

127.0.0.1 google.com
127.0.0.1 yahoo.com

z.txt

0.0.0.0 apple.com
0.0.0.0 yahoo.com

包含域 yahoo.com 的行应该从其中一个中删除。

如果此行也存在于另一个文件中,也应从中删除。

我尝试了什么

1- 将所有文件连接成一个,排序并只保留唯一的行。
只有一个大文件并不是理想的解决方案。

2- 遍历文件,将每个文件与其余文件进行比较。
将结果保存在一个临时文件中,排序,删除重复行,最后重命名临时文件以替换原来的文件。
好像我在这里浪费资源。

最佳答案

你能试试这个 awk 吗?它不会在文件中替换。它只是从所有文件中获取第二列的唯一记录

awk '!A[$NF]++' *.txt

关于linux - 仅保留唯一行,搜索整个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41475677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com