awk 'BEGIN{FS=OFS="|"} NR==FNR{w[$1]=$2;m[$1]=$3} NR>FNR{for(a in w) if(a==$1 && w[a]!=$2) {print a,w[a],m[a],$1,$2; break} }' file1 file2 >file
NR==FNR就是在处理第一个文件file1
NR>FNR就是在处理第二个文件file2
提醒一下:file是一个shell命令(你看,这边被语法高亮了),建议平时写脚本时文件名、变量名等都尽量不要跟shell命令重合,虽然有时也没什么问题。
awk 'BEGIN{FS=OFS="|"}NR==FNR{a[$1$2];b[$1]=$0;next}!($1$2 in a)&&($1 in b){print b[$1],$0}' file1 file2
注意文件的行尾不要有空格之类的