awk双文件互相匹配查找

摘要:
{if{a[$1]}将b文件中的数据放入数组a,否则,如果print$0}主要用于对b文件的内容进行操作,则判断第二个字段中的数据是否与数组a中的数据匹配,匹配时打印该行。b) 缩减方法:awk-F“[,/]”“{a[$1]}{ifprint$0}”ba分辨率:-F“[,/]”使用或/作为分隔符,而“{a[$1]}{ifprint$0}”使用第一个字段的值作为数组a的下标,以确定第二个字段是否与数组a匹配。由于b文件是首先读取的,而b文件中只有一个字段,因此确定此时它只与文件a相关,最后打印匹配行信息。
awk双文件互相匹配查找

要求

文件a:  
10/05766798607,11/20050325191329,29/0.1,14/05766798607  
10/05767158557,11/20050325191329,29/0.08,14/05767158557 

文件b:  
05766798607  
05766798608  
05766798609  
通过文件a和文件b对比,输出结果如下: 
10/05766798607,11/20050325191329,29/0.1,14/05766798607

方法:a) awk -F"[/,  ]" '{if(NR==FNR){a[$1]}else if($2 in a)print $0}' b a

awk双文件互相匹配查找第1张

解析:NR为主体行号,FNR为单位文件行号。{if(NR==FNR){a[$1]} 将b文件中的数据放入数组a,else if($2 in a)print $0}' 主要是对b文件内容的操作,判断第二个域中数据是否与a数组中的数据匹配,匹配则打印本行。

b)精简法:awk -F"[,/ ]" '{a[$1]}{if($2 in a)print $0}' b a

awk双文件互相匹配查找第2张

解析:-F"[,/ ]" 用,或/ 做分隔符,'{a[$1]}{if($2 in a)print $0}' 用第一个域的值作为数组a的下标,判断第二个域是否与数组a(a数组中的有用数据也就为数组a文件中的,即前三行)中的匹配,因为先读入b文件,且b文件中只有一个域,所以此时判断只与a文件有关,最后打印匹配行信息。

免责声明:文章转载自《awk双文件互相匹配查找》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Elasticsearch之索引模板linux nc (NetCat) 命令详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

中国石油大学(华东)计算机复试C语言参考题库

目录 复试c语言 【研究创新型】8.1 谁能出线 【设计型】8.2 统计素数的个数 【设计型】8.3 数组逆序输出 【设计型】8.4 在屏幕上显示杨辉三角形 【设计型】8.5 求最大值 【设计型】8.6 二维数组 【设计型】8.11 存储并输出一个矩阵 【设计型】8.7 给数组中的元素按顺序编号 【设计型】8.8 求各位数字组成的最大数 【设计型】8...

Java关于数组对象赋值与指针

在实现PageRank算法中犯了两个错误, 1:在对double类型赋值时,除法中没有将分母设置为double类型,而是int类型,导致出现商为0的结果错误,导致推迟 2:当定义两个数组时,对数组赋值时,忘记了,数组是对象的特点直接nowRank=resultRank; 其中resultRank又重新赋值,所以导致nowRank中元素值也发生变化,因为数组...

shell 常用脚本维护笔记

Centos7.5 IP地址维护 #!/usr/bin/bash IPADDR=$(ifconfig|grep inet|sed '2,$d'|awk '{print $2}') GATEWAY=$(ifconfig|grep inet|sed '2,$d'|awk '{print $2}'|awk -F "." '{print $1"."$2"."$3"...

linux命令---awk进阶

awk编程:    1.  变量:    在awk中变量无须定义即可使用,变量在赋值时即已经完成了定义。变量的类型可以是数字、字符串。根据使用的不同,未初始化变量的值为0或空白字符串" ",这主要取决于变量应用的上下文。下面为变量的赋值负号列表: 符号 含义 等价形式 = a = 5 a = 5 += a = a + 5 a += 5...

java容器类

一、  容器类: 下图摘自《Java编程思想》,很好地展示了整个容器类的结构。     由上图可知,容器类库可分为两大类,各自实现了Collection接口和Map接口,下面就常见的类进行一下分类: 实现Collection接口的容器类 Collection  ├List  │├LinkedList  │├ArrayList  │└Vector  │ └S...

使用java8的stream对数组进行求和

1、对BigDecimal类型的值求和。 List<Map<String,Object>> list = new ArrayList<>(); Map<String,Object> stu1 = new HashMap<String, Object>(); stu1.put("name", "张三...