【问题标题】:Find the difference between two files找出两个文件之间的差异
【发布时间】:2013-03-06 23:34:06
【问题描述】:

我有以下情况:

file1.dat 是这样的:

1 2
1 3
1 4
2 1

file2.dat 是这样的:

1 2
2 1
2 3
3 4

我想找出第二个文件与第一个文件之间的差异。我试过机智grep -v -f file1 file2,但我的真实文件比这两个大,当我尝试使用它时,外壳永远不会结束。

结果应该是:

2 3
3 4

文件已排序并且它们具有相同数量的元素。有什么方法可以用 awk 找到解决方案?

【问题讨论】:

标签: awk


【解决方案1】:

您似乎想要file2 中不在file1 中的行:

$ awk 'FNR==NR{a[$0];next}!($0 in a)' file1 file2
2 3
3 4

不过使用comm 更简单:

$ comm -13 file1 file2
2 3
3 4

【讨论】:

  • 为什么是 -13 ?这是什么意思?
  • 阅读man comm -1 以抑制文件1 独有的行和-3 以抑制两者共有的行.. 只留下文件2 中唯一的行。
  • comm 是一个很好的建议。在 awking 不同的值之后,我用它来比较 shellcode
  • @ChrisSeymour 。如果我想要在任何一个文件中丢失的记录不仅仅是 file2 ,不想使用 diff 而是 awk 来获取丢失的记录以及文件名,我该怎么做。
猜你喜欢
  • 2014-02-02
  • 1970-01-01
  • 2021-12-05
  • 2016-07-21
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多