使用AWK读入两个类似的文件

时间:2017-09-07 03:59:57

标签: bash awk

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

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 ,如上面代码中的条件所示)。
  4. 现在,我的问题是如果我将file2添加到上面的代码中,就像这样......

    awk -vid="$name" -F',' 'BEGIN{counter=0;}{if($15=="true"){counter++}}END{print id,counter}' file1 file2
    
    如果两个文件中都存在该条目,

    awk 将对同一条目计数两次。

    问题: 有没有办法检查复制除了合并file1和file2?

1 个答案:

答案 0 :(得分:0)

您可能想要说:

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
BTW原始代码中的片段“END {print name,counter}”应该是“END {print id,counter}”的拼写错误,不是吗?