关于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
展开
 我来答
百度网友5311d79
推荐于2017-11-26 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3201万
展开全部
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命令重合,虽然有时也没什么问题。

广州六哥
2013-08-22 · 采得百花成蜜后,为谁辛苦为谁甜
广州六哥
采纳数:20 获赞数:84

向TA提问 私信TA
展开全部
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


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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式