免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2487 | 回复: 10
打印 上一主题 下一主题

[文本处理] file1中第四列和file2中的第三列如何循环去对比? [复制链接]

论坛徽章:
2
狮子座
日期:2014-08-15 00:24:232015元宵节徽章
日期:2015-03-06 15:52:30
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-26 18:53 |只看该作者 |倒序浏览

  1. file1
  2. 192.168.1.1        proxy is 8.8.8.8
  3. 192.168.1.2        proxy is 8.8.8.8
  4. 192.168.1.3        proxy is 8.8.8.8
  5. file2
  6. 192.168.1.3        - 8.8.8.8
  7. 192.168.1.2        - 4.4.4.4
  8. 192.168.1.1        - 8.8.8.8
复制代码
以上文件是摘出来的数据,我想比较【以192.168.1.1为例,file1的$NF值是否和file2$NF值相同

论坛徽章:
9
寅虎
日期:2013-12-02 12:49:22巨蟹座
日期:2014-07-18 18:13:34卯兔
日期:2014-07-25 14:43:08子鼠
日期:2014-07-26 10:10:51酉鸡
日期:2014-07-31 15:09:562015亚冠之本尤德科
日期:2015-05-19 09:27:382015亚冠之卡尔希纳萨夫
日期:2015-06-20 10:30:212015亚冠之阿尔纳斯尔
日期:2015-07-01 20:46:062015亚冠之城南
日期:2015-07-15 21:12:00
2 [报告]
发表于 2014-08-26 21:05 |只看该作者
  1. awk 'NR==FNR{a[$1]=$NF;next}{if($1 in a){if($NF==a[$1]){print $1,"True"}else{print $1,"False"}}}' b.txt c.txt
复制代码

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
3 [报告]
发表于 2014-08-26 22:02 |只看该作者
  1. awk 'NR==FNR{a[$1]=$NF;next}{if($1 in a){if(a[$1]==$NF)print "same";else print "different"}else print $1" not in file1"}' file1 file2
复制代码

论坛徽章:
2
狮子座
日期:2014-08-15 00:24:232015元宵节徽章
日期:2015-03-06 15:52:30
4 [报告]
发表于 2014-09-28 00:37 |只看该作者
感谢哈,今天才搞明白数组这个问题,如果按照这个AWK判断的话,比如file1 192.168.1.3在file中不存在,或者file2中的file1不存,这种情况该如何判断呢,还能嵌套这一条AWk里面吗?
回复 3# yestreenstars


   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
5 [报告]
发表于 2014-09-28 09:13 |只看该作者
回复 4# djzhangxing
不知道你在说什么{:3_185:}

   

论坛徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
6 [报告]
发表于 2014-09-28 09:23 |只看该作者
回复 4# djzhangxing


    星辰在3楼的代码不是已经判断了file2的记录在file1中是否存在么?

论坛徽章:
2
狮子座
日期:2014-08-15 00:24:232015元宵节徽章
日期:2015-03-06 15:52:30
7 [报告]
发表于 2014-09-28 10:45 |只看该作者
本帖最后由 djzhangxing 于 2014-09-28 10:47 编辑

丢了一个字,表达微微差,上文本吧。

  1. file1
  2. 192.168.1.1        proxy is 8.8.8.8
  3. 192.168.1.2        proxy is 8.8.8.8
  4. 192.168.1.3        proxy is 8.8.8.8
  5. file2
  6. 192.168.1.3        - 8.8.8.8
  7. 192.168.1.2        - 4.4.4.4
  8. 10.0.0.1             - 8.8.8.8
复制代码

  1. 就2个文件吧,运行AWK后,除去same、different应该剩下一条”10.0.0.1 not in file1“,但是我还想得到”192.168.1.3  not in file2“,
  2. 我知道用"awk 'NR==FNR{a[$1]=$NF;next}{if($1 in a){if(a[$1]==$NF)print "same";else print "different"}else print $1" not in file1"} file1 file2' "最后两个文件调换就可以了,
  3. 但是需要2条AWK,我这个脚本有好多这种文件判断,就是想简化下命令。我的意思是能不能写到一句awk里去哈?省省事~~:wink:
复制代码
回复 5# yestreenstars


   

论坛徽章:
2
狮子座
日期:2014-08-15 00:24:232015元宵节徽章
日期:2015-03-06 15:52:30
8 [报告]
发表于 2014-09-28 10:46 |只看该作者
嗯,我还有反判断试下,file2中存在的是否在file1存在~~回复 6# bulletmarquis


   

论坛徽章:
2
摩羯座
日期:2014-11-03 15:28:56卯兔
日期:2015-01-04 17:20:51
9 [报告]
发表于 2014-09-28 10:51 |只看该作者
回复 8# djzhangxing


    这个用awk比较烦吧?相当于读文件A的时候,要用getline把文件B取出来
   或者把文件A与B的内容,先分别存到arrA和arrB里面,然后再到END里面去判断,有这必要么。。。

   目测grep -fA B和grep -vfA B比awk简单。。。

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
10 [报告]
发表于 2014-09-28 12:21 |只看该作者
回复 7# djzhangxing

你直接给出结果来吧
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP