在文件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处理两个文件的方法:特定域的合并、替换等
主要讲解了关于shell中用awk数组处理文件的用法
awk是unix,linux中处理文本的好工具,本文用一个实例说明awk脚本的编写及使用.
awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理
linuxawk将多个文件结果列合并到一个文件整理.pdf
使用Bash Shell 脚本对比两个CSV文件中指定字段差异
提取leach图像的awk文件提取leach图像的awk文件提取leach图像的awk文件
我们必须的工具有两个一个是shell一个是awk,awk对于处理文本文件是最最适合的掌握了awk我们就可以很方便的处理文本文件再借助一些shell命令我们可以很方便得到自己想要的结果。现在从简单的例子来总结一下我觉得会...
此外, awk内建有pipe的功能, 可将处理中的数据传送给外部 的 Shell命令加以处理, 再将Shell命令处理后的数据传回awk程序, 这个特点也使得awk程序很 容易使用系统资源. 由于awk具有上述特色, 在问题处理的过程中, 可...
linux运维,文本处理三剑客之,awk文本处理工具。非常详细!
awk学习awk学习awk学习awk学习awk学习awk学习awk学习
利用tcpdump抓包和awk处理写的基于端口的流量统计
临到要用的时候发现unix下面通常都是用c实现的ini文件操作,网上搜了半天没有现成可用的,真是郁闷,只好自己写了一个,这个程序是对INI文件进行修改的,其实只要删掉几句就变成了查找的了
awk 是一种程序语言. 它具有一般程序语言常见的... 此外, awk内建有pipe的功能, 可将处理中的数据传送给外部的 Shell命令加以处理, 再将Shell命令处理后的数据传回awk程序, 这个特点也使得awk程序很容易使用系统资源.
Awk是为高级文本处理而设计的非常强大的工具。它逐行搜索扫描文件,将输入的每行分割成字段,将输入行或字段与模式进行比较,并对匹配的结果执行操作。
1. awk非常适合于结构化的文本文件(行、列数据)复杂处理。相对于sed而言,它可进行复杂的编程处理,并且可以产生复杂的报表输出。 2. awk通常有三个版本,旧awk、nawk(新)、gawk。Solaris下建议用nawk,因为旧...
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 语言具有某些特点, 如: 使用直译器(Interpreter)不需先行编译;...将Shell 命令处理后的数据传回awk 程序, 这个特点也使得awk 程序很容易使用 系统资源.
自己编写的经过验证的AWK文件, 用于分析NS2中的TRACE文件,来 解析网络性能,保证可以用,但是不同的 机子会有不同的效果,大家改一些绝对可以用。
awk 是一门编程语言,它的基本操作是在一组文件上查找模式,并在包含这些模式实例的那 些行或字段上进行指定的动作。awk 使得特定数据的选择和变换操作更易于表达