gpt4 book ai didi

bash - 按行比较两个文件并从第一个文件中删除重复项

转载 作者:行者123 更新时间:2023-11-29 09:17:30 26 4
gpt4 key购买 nike

问题:

  1. 需要比较两个文件,
  2. 从第一个文件中删除重复项
  3. 然后将 file1 的行附加到 file2

实例说明

假设,这两个文件是test1和test2。

$ cat test2
www.xyz.com/abc-2
www.xyz.com/abc-3
www.xyz.com/abc-4
www.xyz.com/abc-5
www.xyz.com/abc-6

而test1是

$ cat test1
www.xyz.com/abc-1
www.xyz.com/abc-2
www.xyz.com/abc-3
www.xyz.com/abc-4
www.xyz.com/abc-5

比较 test1 和 test2 并从测试 1 中删除重复项

要求的结果:

$ cat test1
www.xyz.com/abc-1

然后将这个test1的数据加入到test2中

$ cat test2
www.xyz.com/abc-2
www.xyz.com/abc-3
www.xyz.com/abc-4
www.xyz.com/abc-5
www.xyz.com/abc-6
www.xyz.com/abc-1

尝试过的解决方案:

join -v1 -v2 <(sort test1) <(sort test2)

这导致了这个(这是错误的输出)

$ join -v1 -v2 <(sort test1) <(sort test2)
www.xyz.com/abc-1
www.xyz.com/abc-6

我尝试的另一个解决方案是:

fgrep -vf test1 test2

没有结果。

最佳答案

从 test1 中删除行,因为它们在 test2 中:

$ grep -vxFf test2 test1
www.xyz.com/abc-1

覆盖测试1:

grep -vxFf test2 test1 >test1.tmp && mv test1.tmp test1

将新的 test1 附加到 test2 的末尾:

cat test1 >>test2

grep 选项

grep 通常会打印匹配的行。 -v 告诉 grep 做相反的事情:它只打印不匹配的行

-x 告诉 grep 进行整行匹配。

-F 告诉 grep 我们使用的是固定字符串,而不是正则表达式。

-f test2 告诉 grep 从文件 test2 中读取这些固定字符串,每行一个。

关于bash - 按行比较两个文件并从第一个文件中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37503186/

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