关于awk两个文件进行比对的问题
下面两个文件,我想得到如果$1相同,$2不同的数据,这个语句用AWK应该怎么写。file1:a|1|11b|1|32c|2|34d|3|32e|4|2f|1|3file2...
下面两个文件,我想得到如果$1相同,$2不同的数据,这个语句用AWK应该怎么写。
file1:
a|1|11
b|1|32
c|2|34
d|3|32
e|4|2
f|1|3
file2:
a|1
b|2
c|3
g|3
e|4
f|5
得到file的结果应该是这样的内容:
b|1|32|b|2
c|2|34|c|3
f|1|3|f|5 展开
file1:
a|1|11
b|1|32
c|2|34
d|3|32
e|4|2
f|1|3
file2:
a|1
b|2
c|3
g|3
e|4
f|5
得到file的结果应该是这样的内容:
b|1|32|b|2
c|2|34|c|3
f|1|3|f|5 展开
2个回答
展开全部
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命令重合,虽然有时也没什么问题。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询