最近由于数据迁移过,有些用户信息需要再次确认下,也许数据量比较大,但是需要最终确认的比如说是用户ID和其对应的用户积分数,这样就会导致出现文本a(老的数据),文本b(新的数据)。比如


这是文本a.txt

文本b.txt如下


  列举的文本例子只是为了说明使用方法列举的最简单的文本,实际数据可能要复杂的多,可能会出现b.txt 中出现的ID在a.txt中没有出现等等情况,这里只是为了说明awk 关联数组的高级应用,方便大家理解。

  我们会发下b.txt中的ID 为1102 和1103 用户的积分数与先前的是不同的,那么如何通过shell 来处理呢?下面介绍强大的文本工具awk:

  提取两个文本中第二列相同并将积分进行合并:

  awk 'NR=FNR{a[$1]=$2}NR!=FNR{$2==a[$1] print $0,a[$1]}' a.txt b.txt 可以得到如下结果:

  

  其中NR,FNR都为awk的内置的数据变量,其中NR为含处理过的所有的数据行总数,FNR为处理过的当前数据文件中的数据行的总数。简单的来说可以这么理解NR为执行读取两个文本行的总数,而FNR为读取第一个文本行的数量,所以判断条件可以通过“!=”也可以通过“>”来判断。而a[$1]=$2为将第一个文本行中第二个字段赋值给数组a,然后当处理到第二个文本时,可以利用已经赋值的数组进行判断进行有条件的输出。

  然后第二列积分数不同的以此类推即可。

shell 之awk 关联数组高级应用的更多相关文章

  1. shell练习--关于关联数组自增统计判断的学习

    今天在书上看到了一个关联数组 let statarray["$ftype"]++  这样一个操作,用来做索引的自增统计,所以记下来 #!/bin/bash #统计文件类型 #关于关 ...

  2. [ SHELL编程 ] 数组、关联数组和awk数组

    本文主要对shell编程中常用的数组.关联数组和awk数组定义.操作以及注意事项做个总结,并提供具体案例. 数组 数组定义:一对圆括号表示数组,数组元素之间用空格符号分割. Array=(val1 v ...

  3. SHELL脚本编程-普通数组(列表)和关联数组(字典)

    SHELL脚本编程-普通数组(列表)和关联数组(字典) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组相关概述 变量: 存储单个元素的内存空间 数组: 存储多个元素的连续的 ...

  4. shell编程系列21--文本处理三剑客之awk中数组的用法及模拟生产环境数据统计

    shell编程系列21--文本处理三剑客之awk中数组的用法及模拟生产环境数据统计 shell中的数组的用法: shell数组中的下标是从0开始的 array=("Allen" & ...

  5. shell编程之数组和关联数组

    一.数组类似c语言的数组 1.两种赋值方式 可以整体定义数组:ARRAY_NAME=(value0 value1 value2 value3 ...) 此时数组的下标默认是从0开始的 还可以单独定义数 ...

  6. shell之数组和关联数组

    数组和关联数组 #!/bin/bash #定义数组1 array_var1=(1 2 3 4 5 6)# #定义数组2 array_var[0]="test1" array_var ...

  7. JavaScript高级 面向对象(11)--对象的动态特性-关联数组用法

    说明(2017.4.2): 1. 对象的动态特性: (1)在js中,一个对象需要属性,就可以利用“对象名.属性 = 值”的方式为其添加,只要赋值成功,对象就新增这个属性. (2)对象属性的访问形式: ...

  8. javaScript高级教程(三) javaScript不支持关联数组,只是语法上像关联数组

    1.在js中所有要素都是继承自Object对象的,任何对象都能通过obj['name'] = something的形式来添加属性,相当于obj.name=something. 之所以设计中括号这种存取 ...

  9. Linux shell —— 数组与关联数组

    使用 declare -A(declare 的用法请使用 help 进行查看,help declare) 进行声明关联数组变量: $ declare -A fruits_price $ fruits_ ...

随机推荐

  1. 【Time系列四】查询各月份的日历

    荒废了两个星期没学java了,今天一心想突破"日历查询"这个小程序.先用比较简单的python实现下. 无奈天资愚钝,想了一个上午.最后卡在了日期排列的问题上,只好去参考下别人的代 ...

  2. shrio配置说明

    1.引入Shiro的Maven依赖 <!-- Spring 整合Shiro需要的依赖 --> <dependency> <groupId>org.apache.sh ...

  3. 修改redis端口号

    为redis分配一个8888端口,操作步骤如下:1.$REDIS_HOME/redis.conf重新复制一份,重命名为redis8888.conf.2.打开redis8888.conf配置文件,找到p ...

  4. js的严格模式

    严格模式: 严格模式这下的主要区别如下: 严格模式下的好处:

  5. Jmeter连接SqlServer数据库进行压力测试

    Jmeter连接SqlServer数据库进行压力测试 前提准备:先安装jdbc驱动 驱动下载链接地址:http://pan.baidu.com/s/1bpDpjSr 密码:v6tn 下载解压之后,讲s ...

  6. Visual Studio 2010 使用 ankhsvn

    之前用的 Windows XP + Visual Studio 2010 + ankhSvn,其中ankhSvn安装完后直接可用, 后来系统换成Windows10后安装ankhSvn,Extentio ...

  7. div显示与隐藏及height()函数

    总结与网络 1. $("#id").show()表示display:block,$("#id").hide()表示display:none; $("# ...

  8. Docker 总结

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+] Docker总结 简单介绍 1 Docker 架构 安装和环境配置 1 mac 11 brew安装 11 dmg文件安装 1 ...

  9. jquery 复选框

    jquery 选中复选框 $("input[type='checkbox']").prop("checked", true); jquery 判断复选框是否被选 ...

  10. windows和Ubuntu双系统的安装和基本操作

    因为最近刚开始学习ubuntu系统,首先要安装系统,搜集了网上的资料觉得这篇博客特别有用  http://www.cnblogs.com/Duane/p/5424218.html,我也是按照里面的步骤 ...