awk 有时确实比较省事,做些简单的文本处理,还是很方便的,在这介绍下两个文件的join的操作。

原始文本

bb.txt

a 10
b 12

cc.txt

a 11
b 13
c 15

awk join主要是用到连个内置的变量 NR,FNR,先看这的区别

awk '{print NR,FNR,$0}' bb.txt cc.txt
1 1 a 10
2 2 b 12
3 1 a 11
4 2 b 13
5 3 c 15

NR是读取所有的行号

FNR读取每个文件的行号索引号,当文件发生变化时,FNR从1开始计算

当NR=FNR时读的是第一个文本,当NR=FNR时读的是第二个文本,那么跟awk读取文件关键的思路就是先读第一个文件,然后匹配第二个文件中是否存在。

awk 'NR==FNR{s[$1]=$2}NR!=FNR{print $0,s[$1]}' bb.txt cc.txt
a 11 10
b 13 12
c 15

这个其实是ccl eft outer join bb,稍微解读一下。

当NR==FNR,其实就是s[a]=10 s[b]=12

当NR!=FNR时,就是$1 也就是a,b为索引,去cc.txt中查找

做全关联时,也就是join时可以用下列方法

awk 'NR==FNR{s[$1]=$2}NR!=FNR && s[$1]{print $0,s[$1]}' bb.txt cc.txt
a 11 10
b 13 12
awk 'NR==FNR{s[$1]=$2}NR!=FNR && $1 in s {print $0,s[$1]}' bb.txt cc.txt
a 11 10
b 13 12

这两种方法其实是一样的。

awk实现join的更多相关文章

  1. grep,sed,cut,awk,join个性特点

    grep 从数据文件中查询/提取出含有特定关键字的行. sed 主要用于对数据文件中特定字符串的替换处理. cut 按照指定的分隔符(-d)剪下选定的列(-f num)或者字符(-c)的内容. awk ...

  2. linux —— shell 编程(文本处理)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed aw ...

  3. 提取SQL中用到的表

    dos2unix * for i in `ls` do :}` awk '{print tolower($0)}' "${i}"|grep -Eiw "from" ...

  4. 文本替换sed+字段处理cut,join+awk重新编排字段

    [1]sed工具(Stream Editor)--流编辑器 sed 本身也是一个管线(管道)命令,可以分析 standard input 的啦! 而且 sed 还可以将数据进行取代.删除.新增.截取特 ...

  5. 4、linux-grep awk sed and cuf sort uniq join

    1.grep 1.1 grep [-invc] [--color=auto] '搜寻字符串' filename选项与参数:-i :忽略大小写的不同-n :顺便输出行号-v :显示没有 '搜寻字符串' ...

  6. AWK高级编程 转载

    AWK高级编程 转载 转载自:http://blog.csdn.net/wzhwho/article/details/5513791 1. 程序元素 一个awk 程序是一对以模式(pattern) 与 ...

  7. split function of Perl,Python,Awk

    使用中常用到Perl,Python,AWK,R, 虽然Java,C,C++,Vala也学过但是就是不喜欢,你说怎么办. 看来一辈子脚本的命. Perl @rray = split /PATTERN/, ...

  8. Pyp 替代sed,awk的文本处理工具

    Linux上文本处理工具虽不少,像cut,tr,join,split,paste,sort,uniq,sed,awk这些经典工具让人眼花缭乱,而且都太老了,使用方法都不太人性化,尤其awk,语法简直反 ...

  9. 【转】linux中的cut/tr/join/split/xargs命令

    1. cut命令 cut命令用于从文件或者标准输入中读取内容并截取每一行的特定部分并送到标准输出. 截取的方式有三种:一是按照字符位置,二是按照字节位置,三是使用一个分隔符将一行分割成多个field, ...

随机推荐

  1. 常见数据结构之JavaScript实现

    常见数据结构之JavaScript实现 随着前端技术的不断发展,投入到前端开发的人数也越来越多,招聘的前端职位也越来越火,大有前几年iOS开发那阵热潮.早两年,前端找工作很少问到关于数据结构和算法的, ...

  2. sqlite里执行查询提示未启用约束、主键冲突之——数据竟能超字段长度存储

    数据表设计如图:szflbm为主键 数据表主键数据: 以上数据在查询时,执行到该语句adapter.Fill(table); 提示主键冲突. 解决: 1.尝试修改数据,把ZC1改成ZZ,正常.说明原因 ...

  3. 自身对highcharts理解

    最近公司要求做一些图标,动态的添加数据,展示在手机上,以前对Echarts,d3,highcharts只是听说,也没实际去花一定的时间玩玩,也是自以为是,不就看看api的事,结果呢?-----被他们给 ...

  4. Oracle补习班第七天

    Keep conscience clear, then never fear. 问心无愧,永无畏惧 服务端监听 lsnrctl status  #查看监听服务 netca #配置动态监听 lsnrct ...

  5. 用Spring+Junit4.4进行测试(使用注解)

    http://nottiansyf.iteye.com/blog/345819 使用Junit4.4测试 在类上的配置Annotation @RunWith(SpringJUnit4ClassRunn ...

  6. QQ右下角浮动窗口

    <html><head><meta http-equiv="Content-Type" content="text/html; charse ...

  7. linux socket编程实例

    /* ============================================================================ Name : client.c Auth ...

  8. SSH配置免密码登陆

    1.使用SSH-keygen,然后一路回车使之生成id_rsa何id_rsa.pub文件,id_rsa.pub为公匙文件. 2.使用命令:cat ~/.ssh/id_rsa.pub >> ...

  9. disposition

    该文为堕落的天使不再来原创.欢迎转载. 在尽心web开发时,可能遇到以下几种需求:(disposition配置) 希望某类或者某已知MIME 类型的文件(比如:*.gif;*.txt;*.htm)能够 ...

  10. 查看APK方法数的工具dex-method-counts

    做APK方法总能遇到方法数超限的问题(主要是方法数, 字段数, String数.等各种数都可能超过65k导致不能安装) 除了大公司都自己做了一些检查方法. 网上还有一些开源的查询工具. 给大家推荐一个 ...