2016-03-02 88 views
0

awk和大部分编程的新手段。尝试比较项目的几个文件并追加MATCH或NO MATCH。Compe 2 Awk文件打印匹配/不匹配

我当前的awk代码从一个不同的问题,我一直在寻找到awk Compare 2 files print match and differences

我的代码调整为:

awk 'NR==FNR{a[$0];next}{if (a[$0]=$0)print a[$0], "MATCh";else print a[$0], "NO MATCH";}' file1.txt file2.txt >> file3.txt 

通过围绕调整它,我可以得到所有“MATCH”被追加或所有“不匹配”被附加。任何帮助将不胜感激,并希望了解我做错了什么。谢谢!

+1

'='是不是'一[$ 0] = $ 0',你已经使用了正确的形式平等检查'NR == FNR' – karakfa

回答

0

这是你的脚本似乎什么要努力做正确的语法:

awk 'NR==FNR{a[$0];next} {print $0, ($0 in a ? "" : "NO ") "MATCH"}' file1.txt file2.txt 
+0

谢谢您的评论。这似乎让我更进一步,然而它似乎遇到了一条无与伦比的线路,它将其余部分放在了无与伦比的地位。你介意在$ 0中解释$?部分?剩下的我觉得对我来说很合理。感谢你的帮助。 – user6008947

+0

这只是一个三元表达式(https://en.wikipedia.org/wiki/%3F :),用于检查当前文件(file2.txt)中的当前行是否存在于前一个文件(file1.txt)中。如果确实存在,则在MATCH之前没有打印任何额外的内容,否则在MATCH之前打印NO。脚本不会在第一次出现不匹配的行后指示所有行都不匹配。调试 - 添加打印和/或减少您的示例输入到可能重现问题的最小可能集。如果你无法从中找出答案,可以发布一个带有示例输入/输出的问题来获得帮助。 –

+1

谢谢!你的评论帮助我照顾到了这一点。 – user6008947

相关问题