【问题标题】:Comparing two files in Unix and remove the contents of one file that are not present比较 Unix 中的两个文件并删除一个文件中不存在的内容
【发布时间】:2015-09-23 01:47:55
【问题描述】:

比如说我有 2 个文件。

文件1

1,Unix,100
2,Java,200
3,c++,300

文件2

Unix
c++

期望的输出

1,Unix,100
3,c++,300

我正在尝试将 awk 语句与 FNR 变量一起使用,但我无法获得输出。

提前致谢。 塔希尔

【问题讨论】:

  • grep -f file2 file1 ..... 这个问题是重复的
  • @JoseRicardoBustosM,如果来自 file2 的字符串出现在 file1 的其他位置,使用 grep 可能会得到误报。我们不知道完整的输入数据集。
  • @ghoti 这是并发问题.....我明白了,grep 会产生误报.....
  • * 循环而不是并发 ;P

标签: unix awk


【解决方案1】:

我会选择:

awk -F, 'NR==FNR { a[$0]; next; } $2 in a' file2 file1

这里的想法是,您使用指定的第一个文件 (file2) 中的排除项加载数组,然后逐步打印主要数据,仅打印字段 2 中存在数组元素的行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多