gpt4 book ai didi

Bash 集减法

转载 作者:行者123 更新时间:2023-11-29 08:49:28 25 4
gpt4 key购买 nike

如何在 Bash 中从一个集合中减去另一个集合?

这类似于:Is there a "set" data structure in bash?但不同的是它询问如何使用代码执行减法

  • set1:过滤器输出 N 行
  • set2:过滤器输出 M 行

获取方式:

  • set3: N 中没有出现在 M 中的所有行

最佳答案

comm -23 <(command_which_generate_N|sort) <(command_which_generate_M|sort)

不带选项的 comm 显示 3 列输出:1:仅在第一个文件中,2:仅在第二个文件中,3:在两个文件中。 -23 删除第二和第三列。

$ cat > file1.list
A
B
C
$ cat > file2.list
A
C
D
$ comm file1.list file2.list
A
B
C
D
$ comm -12 file1.list file2.list # In both
A
C
$ comm -23 file1.list file2.list # Only in set 1
B
$ comm -13 file1.list file2.list # Only in set 2
D

输入文件必须排序。

GNU sort 和 comm 取决于语言环境,例如输出顺序可能不同(但内容必须相同)

(export LC_ALL=C; comm -23 <(command_which_generate_N|sort) <(command_which_generate_M|sort))

关于Bash 集减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11963844/

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