根据字段比较两个文件

时间:2017-06-02 18:36:46

标签: bash shell unix scripting

我有两个包含以下数据的UNIX文件。我必须比较文件1的字段1,字段2和字段3与文件2,如果匹配,我必须检查文件1中的字段5是否与文件2的字段5匹配,如果它不匹配我必须打印它来自文件1,否则只是忽略。

档案1

A|B|C|1|D|

A|B|D|1|D|

A|B|E|1|D|

A|B|F|1|D|

文件2

A|B|Z|1|D|

A|B|C|1|x|

A|B|D|1|y|

A|B|E|1|D|

所以结果应该是     A | B | C | 1 | d |

A|B|D|1|D|

1 个答案:

答案 0 :(得分:0)

awk救援!

这用于匹配字段1,2,3,5

$ awk -F'|' '{k=$1 FS $2 FS $3 FS $5} NR==FNR{a[k];next} k in a' file2 file1

A|B|E|1|D|

你的问题不一样,但结果与你的不符,你需要解释为什么不应该打印其中一条记录

$ awk -F'|' '{k=$1 FS $2 FS $3} 
     NR==FNR {a[k]=$5; next} 
     k in a && a[k]!=$5' file2 file1

A|B|C|1|D|
A|B|D|1|D|