比较两个文件中的列并显示发现错误的位置

时间:2018-11-12 16:01:17

标签: awk

比较File1和File2的列1和2。在值不匹配的第一时间停止比较并退出过程

文件1

1 31789.00 37145.00
1 32221.00 37145.00
1 56783.00 37145.00
1 32223.00 37145.00
1 31793.00 37145.00

文件2

1 31789.00 37145.00
1 32221.00 37145.00
1 31791.00 37145.00
1 32223.00 99999.00
1 31793.00 37145.00

我尝试过

  awk 'NR==FNR{a[$0];next}(!($0 in a)){print}' File1 File2

我不想显示不匹配的行,我想在出错时停止该过程,并说出发现错误的行

类似的东西:

Error found in line 3

3 个答案:

答案 0 :(得分:1)

能否请您尝试以下。考虑到您不想打印匹配的行。

redux-persist
上面的代码中的

awk 'FNR==NR{a[$1,$2]=$0;next} !(($1,$2) in a){print "Error found in line "FNR;exit}' Input_file1 Input_file2 将帮助您尽快执行此操作,如果您不需要它,则可以将其从上面的代码中删除。

现在也添加上述解决方案的非一个内衬形式。

exit

答案 1 :(得分:1)

赞:

awk 'NR==FNR{a[NR]=$1;b[NR]=$2;next}
     a[FNR]!=$1||b[FNR]!=$2{print "error in line "FNR; exit 1}' file1 file2

答案 2 :(得分:1)

这会更简单

    SqlQuery<String, MyEntity> sql = new SqlQuery<>(MyEntity.class, SQL_SELECT);
    //You can set arguments
    //sql.setArgs(composante, typeValeur);
    return myEntityCache.query(sql).getAll().stream().map(Entry::getValue)
    .collect(Collectors.toList());