gpt4 book ai didi

linux - 在 2 组/文件之间提取唯一值

转载 作者:IT王子 更新时间:2023-10-29 00:17:03 28 4
gpt4 key购买 nike

在 linux/shell 环境中工作,我怎样才能完成以下任务:

文本文件 1 包含:

1
2
3
4
5

文本文件 2 包含:

6
7
1
2
3
4

我需要提取文件 2 中不在文件 1 中的条目。因此在本例中为“6”和“7”。

如何从命令行执行此操作?

非常感谢!

最佳答案

$ awk 'FNR==NR {a[$0]++; next} !($0 in a)' file1 file2
6
7

代码工作原理说明:

  • 如果我们正在处理文件 1,请跟踪我们看到的每一行文本。
  • 如果我们正在处理 file2,但没有看到行文本,则打印它。

详细说明:

  • FNR为当前文件的记录号
  • NR 是所有输入文件的当前总记录数
  • FNR==NR 只有在读取文件 1 时才为真
  • $0 是当前的文本行
  • a[$0] 是一个散列,其键设置为当前文本行
  • a[$0]++ 跟踪我们已经看到的当前文本行
  • !($0 in a) 仅当我们没有看到行文本时才为真
  • 如果上述模式返回 true,则打印文本行,这是没有给出显式操作时的默认 awk 行为

关于linux - 在 2 组/文件之间提取唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4717250/

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