`

AWK处理两个文件公共字段

 
阅读更多

在文件score.txt中存有如下数据:(姓名 分数)

lisi 88

bokeyuan 97

zhangsan 77

wangwu 89

hongliu 92

zhanghua 97

在文件student.txt中存有:

zhangsan

hongliu

 

使用awk, cut, grep, find等任意shell脚本,输出student.txt所有学生的分数,即输出:

zhangsan 77

hongliu 92

 

如果只在score.txt中处理,可以很容易得写出

awk ' { if ($1 == "zhangsan") print $0} ' score.txt

但是结合另外一个文件,该怎么处理呢?

 

求人不如求自己,到处找了找处理方法,可以使用awk来处理多个文件,答案如下:

 awk  ' {if (ARGIND==1) grade[$1] = $0}  {if (ARGIND>1 && ($1 in grade)) print grade[$1]} ' score.txt student.txt

简化版得写法为:

 awk 'ARGIND==1 {grade[$1]=$0}  ARGIND>1 && ($1 in grade) {print grade[$1]}' grade.txt student.txt

分析:

ARGIND==1处理第一个参数,即score.txt文件,或者用NR==FNR(

NR:表示awk开始执行程序后所读取的数据行数。

FNR:awk当前读取的记录数,其变量值小于等于NR(比如当读取第二个文件时,FNR是从0开始重新计数,而NR不会)。

NR==FNR:用于在读取两个或两个以上的文件时,判断是不是在读取第一个文件。

)

{grade[$1] = $0} 以grade.txt文件中的第一列为索引,将grade.txt中得内容存入grade数组中

if (ARGIND>1 && ($1 in grade)) print grade[$1] 如果处理的是第二个及以后的文件,即name.txt,检查第一列(姓名)是否在grade数组中,如果在,就打印以姓名为索引的grade信息。

分享到:
评论

相关推荐

    awk处理两个文件的方法

    用awk处理两个文件的方法:特定域的合并、替换等

    用awk数组处理两个文件

    主要讲解了关于shell中用awk数组处理文件的用法

    巧用AWK处理二进制数据文件

    awk是unix,linux中处理文本的好工具,本文用一个实例说明awk脚本的编写及使用.

    AWK文件处理总结

    awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理

    linuxawk将多个文件结果列合并到一个文件整理.pdf

    linuxawk将多个文件结果列合并到一个文件整理.pdf

    Linux+Script+CSV+awk+对比两个CSV文件中指定字段差异

    使用Bash Shell 脚本对比两个CSV文件中指定字段差异

    提取leach图像的awk文件

    提取leach图像的awk文件提取leach图像的awk文件提取leach图像的awk文件

    shell awk脚本总结.txt

    我们必须的工具有两个一个是shell一个是awk,awk对于处理文本文件是最最适合的掌握了awk我们就可以很方便的处理文本文件再借助一些shell命令我们可以很方便得到自己想要的结果。现在从简单的例子来总结一下我觉得会...

    awk入门到精通.pdf

    此外, awk内建有pipe的功能, 可将处理中的数据传送给外部 的 Shell命令加以处理, 再将Shell命令处理后的数据传回awk程序, 这个特点也使得awk程序很 容易使用系统资源. 由于awk具有上述特色, 在问题处理的过程中, 可...

    awk文本处理工具

    linux运维,文本处理三剑客之,awk文本处理工具。非常详细!

    awk学习awk学习awk学习awk学习

    awk学习awk学习awk学习awk学习awk学习awk学习awk学习

    linux-利用tcpdump抓包和awk处理写的基于端口的流量统计

    利用tcpdump抓包和awk处理写的基于端口的流量统计

    unix shell awk 修改ini文件的脚本

    临到要用的时候发现unix下面通常都是用c实现的ini文件操作,网上搜了半天没有现成可用的,真是郁闷,只好自己写了一个,这个程序是对INI文件进行修改的,其实只要删掉几句就变成了查找的了

    linux 文本处理 awk 手册

    awk 是一种程序语言. 它具有一般程序语言常见的... 此外, awk内建有pipe的功能, 可将处理中的数据传送给外部的 Shell命令加以处理, 再将Shell命令处理后的数据传回awk程序, 这个特点也使得awk程序很容易使用系统资源.

    教你如何使用 awk 处理文本内容.doc

    Awk是为高级文本处理而设计的非常强大的工具。它逐行搜索扫描文件,将输入的每行分割成字段,将输入行或字段与模式进行比较,并对匹配的结果执行操作。

    awk用法小结--有关awk的材料

    1. awk非常适合于结构化的文本文件(行、列数据)复杂处理。相对于sed而言,它可进行复杂的编程处理,并且可以产生复杂的报表输出。 2. awk通常有三个版本,旧awk、nawk(新)、gawk。Solaris下建议用nawk,因为旧...

    AWK用法AWK用法AWK用法

    awk ‘/101/’ file 显示文件file中包含101的匹配行。 awk ‘/101/,/105/’ file awk ‘$1 == 5′ file awk ‘$1 == “CT”‘ file 注意必须带双引号 awk ‘$1 * $2 >100 ‘ file awk ‘$2 >5 && $2<=15' file

    awk用法详解

    awk 是一种程序语言. 它具有一般程序语言常见的功能. 因awk 语言具有某些特点, 如: 使用直译器(Interpreter)不需先行编译;...将Shell 命令处理后的数据传回awk 程序, 这个特点也使得awk 程序很容易使用 系统资源.

    NS2 分析网络性能的AWK文件

    自己编写的经过验证的AWK文件, 用于分析NS2中的TRACE文件,来 解析网络性能,保证可以用,但是不同的 机子会有不同的效果,大家改一些绝对可以用。

    awk入门级教材awk入门awk入门

    awk 是一门编程语言,它的基本操作是在一组文件上查找模式,并在包含这些模式实例的那 些行或字段上进行指定的动作。awk 使得特定数据的选择和变换操作更易于表达

Global site tag (gtag.js) - Google Analytics