关于awk两个文件进行比对的问题

2025-05-04 03:25:07
推荐回答(2个)
回答(1):

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命令重合,虽然有时也没什么问题。

回答(2):

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


注意文件的行尾不要有空格之类的