【问题标题】:Read in two similar files using AWK使用 AWK 读入两个相似的文件
【发布时间】:2017-09-07 03:59:56
【问题描述】:

最初,我只有一个文件可以在某些条件下读取。这是代码...

awk -vid="$name" -F',' 'BEGIN{counter=0;}{if($15=="true"){counter++}}END{print id,counter}' file1

此代码运行正常。

但是现在,我必须阅读 2 个文件。 这两个文件之间的唯一区别是 file2 有 1 个额外的列。 file1 有 16 列,file2 有 17 列。会有一个实例,file1中的一行将存在于file2中(加上额外的列)

可能的情况:

  1. file1 中的一行将存在于 file2 中(忽略多余的列)
  2. file1 中的一行与 file2 不同
  3. file1 和 file2 中的一行是相似的,除了第 15 列(true 或 false,如上面代码中的条件所示)。

现在,我的问题是,如果我将 file2 添加到上面的代码中,像这样......

awk -vid="$name" -F',' 'BEGIN{counter=0;}{if($15=="true"){counter++}}END{print id,counter}' file1 file2

awk 如果两个文件中都存在同一个条目,则该条目会计算两次。

问题: 除了合并file1和file2还有什么方法可以检查重复吗?

【问题讨论】:

  • 请从这两个文件和预期的输出中发布一些示例。

标签: bash awk


【解决方案1】:

你可能想说这样的话:

awk -vid="$name" -F',' 'BEGIN{counter=0;}{if($15=="true" && !done[$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14]++){counter++}}END{print id,counter}' file1 file2

顺便说一句,原始代码中的片段“END{print name,counter}”应该是“END{print id,counter}”的错字,不是吗?

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 2015-10-17
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 2017-01-31
    相关资源
    最近更新 更多