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信息。

GNU自由文档许可证指南及awk编程语言术语解析 本博客文章旨在解析GNU自由文档许可证的使用方法,并深入探讨awk编程语言的核心概念及其术语。通过实际案例,文章详细阐述了如何在文档中合法使用许可证,并解释了awk语言中的关键术语和编程要素。 阅读详情

相关推荐

awk处理两个文件的方法

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

Linux Shell中使用awk完成两个文件的关联Join

Shell中的awk命令是非常强大的,有很多书籍专门介绍awk的。本文介绍的只是其中很小的一个点,使用awk命令完成两个文件的关联join。 先看看awk中的两个自身变量,NR和FNR。 awk可以指定同时读取多个文件,按照指定的先后顺序,逐个读取。 NR指的是awk所读取到所有记录(包括多个文件)的行数索引号,大概是Number Of Record的...

weixin_33728268的博客 575

扫地机的CPU只要二十多块?2024第二拆来了

昨天还说到这个机器人的故障,经小鱼拆机后测试和后台网友留言确认,不是防跌落问题,是轮子故障,这个轮子不会动,轮子上有一个限位开关检测机器人是否离开地面的,测试的时候也没有误触发,所以电机存在故障,后面拆电机的时候再检查。最后再留下一个疑问,这个机器人的回充没有用红外管,机器人是如何识别基站进行返回充电的(因为只买了本体,没买充电桩,不确定充电桩的形状,是不是利用点云识别不确定)懂的请留言。全志的R16,封装是 BGA282,那这个板子至少是4层板,小鱼盲猜 6 层板,知道的小伙伴欢迎留言。

生活不止眼前的苟且 1981

awk处理多个文件

<br />awk的数据输入有两个来源,标准输入和文件,后一种方式支持多个文件。<br /><br />如:<br />1. shell的Pathname Expansion方式:awk '{...}'  *.txt <br /><br />#  *.txt先被shell解释,替换成当前目录下的所有*.txt,<br />#  如当前目录有1.txt和2.txt,则命令最终为awk '{...}' 1.txt 2.txt<br /><br /><br />2. 直接指定多个文件: awk '{...}' a

我本书生 1万+

生信分析实战指南:Linux环境下EMBOSS的安装与核心功能详解

本文详细介绍了在Linux环境下安装和使用EMBOSS工具包的实战指南,涵盖源码编译、包管理器安装和Conda安装三种方法,并演示了序列比对、序列特征提取和引物设计等核心功能。EMBOSS作为生物信息学领域的开源工具集,适用于序列分析、蛋白质结构预测等多种任务,帮助研究人员高效完成生信分析工作。

weixin_29202213的博客 465

5分钟搞定!用OpenCV实现全景图像柱面展开的保姆级教程(附完整代码)

本文提供了一份使用OpenCV实现全景图像柱面展开的详细教程。通过清晰的数学原理讲解和分步代码演示,指导读者快速掌握从等距柱状投影全景图到平面展开图的核心转换方法,并涵盖性能优化、参数调整及透视视图扩展等实用技巧,适合图像处理爱好者和开发者实践。

sony5的博客 573

awk 查找两个文件中含有相同字段的列

awk -F ‘,’ ‘ARGIND1{a[$1]=$0}ARGIND2{b=$1;if(b in a) print $0}’ a.txt b.txt > c.txt 说明:两个文件中,一列有多个字段,其中某个字段相同,筛选出此列。

weixin_40357360的博客 1129

顶刊《会计研究》数据复现|最新上市公司数智化数据

本文基于Python文本分析方法构建了中国A股上市公司数智化指标(1991-2024),通过识别年报中的"机器学习""智能医疗"等关键词,量化企业数字化与智能化融合程度。研究发现数智化企业更倾向于非正式渠道的定性披露以规避风险,该指标为监管完善信披规则提供了参考。研究还揭示了数智化对企业信息披露策略的转变,并提出了未来研究方向,包括数智化对绿色创新、ESG表现等影响机制。数据覆盖非金融类上市公司,采用文本挖掘技术构建结构化指标,为相关领域研究提供了微观基础。

PPdata_Academy的博客 1487

awk命令详解

AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它是专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描,过滤,统计汇总等工作,数据可以来自标准输入也可以是管道或文件。

q1y2y3的博客 1万+

【超详细】数据分析笔试题分享,可以收藏后仔细阅读_数据分析岗位笔试题目

这种做法是最精确的做法,保留了所有的信息,也未添加任何额外信息,若预处理时把所有的变量都这样处理,会大大增加数据的维度。15、在某座城市出现了某种流行病,且已知某座城市男女人数相同,男性患该病的概率为5%,女性为0.25%,现已知该城市的小明得了此病,请问小明为男性的概率是() B。D项,使用方差作为特征评分标准,如果某个特征的取值差异不大,通常认为该特征对区分样本的贡献度不大,因此在构造特征过程中去掉方差小于阈值的特征。LTV,用户生命周期价值,是产品从用户获取到流失所得到的全部收益的总和。

2401_89824744的博客 950

【AutoDL】使用云服务器跑深度学习代码

1.算力市场 租用服务器,选择自己心仪的服务器2.镜像可以选择一些基础的镜像,社区镜像里是git上有的环境。3.上传文件在文件存储中,选择上传的区,在右边点击上传,选择自己的文件上传到云服务器中。

weixin_45768644的博客 3703

awk基础用法详解

awk用法-内置变量-函数-条件语句

qq_33172851的博客 3843

【异常】Codybuddy Error Code: 14003 too many requests 限流报错问题排查与解决指南

14003报错本质为服务端限流拦截,并非账号封禁或程序致命故障,90%以上的场景可通过等待冷却+规范使用行为解决。通过本文的排查步骤,可快速恢复工具使用,同时规避后续重复触发该问题。

奶爸的编程之路,也就一周冷个三天 1254

请教一个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 ...

仲翎逸仙 390

离散小波变换(概念与应用)

离散小波变换(概念与应用)

weixin_46713695的博客 4415

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

AWK处理两个文件公共字段【 并不要去列号相等####】把^M处理后果然顺利成功

AWK处理两个文件公共字段【前提条件是i两个文件的第一列比较 不是都再第一列的不能用!!!不是第一列也要两个文件的列序列号是相同,比如第二列对第二列找,第三列对第三列找!!!!列号不相等不能用f (ARGIND>1 && ($2【错误写法,因为$2对应的grade是空!!】 in grade】 [n对应到数组就是groupn对应到数组就是groupn对应到数组就是groupn 是一一对应的!!!所以都强掉用两文件的第一列] awk '{FS="\t";OFS="\t"} {if (

qq_39306047的博客 321

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

类UNIX系统中AWK编程注意事项

背景: AWK是类UNIX系统中的文本处理工具,使用AWK编程实现基于文本数据库统计,往往效率比较好,至少我测试的情况比PERL脚本效率高不少。 注意事项: 1. AWK编程中,定义函数时,不建议在函数中使用全局变量。原因是不利函数重 2. AWK编程中,建议将所有局部变量定义在函数形式参数中,方便函数重用、移植 AWK自定义函数形式: function name(arg1,

chhuma专栏 641

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

shell文本处理三剑客—awk

awk awk命令可以处理数据流。他支持关联数组、递归函数、条件语句等功能。awk命令也可以从stdin中读取输入。 awk脚本的结构如下: awk ‘BEGIN{ print “start” } pattern {commands} END{ print “end” }’ file awk脚本通常由3部分组成:BEGIN、END和带模式匹配选项的公共语句块,这三个部分都是可选的,可以不用出现在脚...

gd0306的博客 731

【shell】shell学习之awk进行文本处理

awk在Linux下对文本和数据进行处理,它可以处理数据流、文本文件等,也支持关联数组、递归函数、条件语句等功能。

sunny哈哈的博客 372

【Shell】三剑客之awk

【awk】 awk 是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。 简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 它支持关联数组、递归函数、条件语句等功能 awk 'BEGIN {print "start"} pattern {commands} END {print "end"}' file awk 脚本通常由3部分组成:BEGIN、END和带模式匹配选项的公共语句块。3部分都是可选的,

HD_jiangbin_的博客 214

Linux中awk命令

awk说明 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。 awk的处理文本和数据的方式:它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要

山鬼谣的专栏 837

05-sed与awk

1. sed命令 1.1 概述 Sed:sed是文本处理工具,可在无交互的情况下实现相当复杂的文本处理操作,依赖于正则表达式 命令格式: sed -e ‘编辑指令’ 文件1 文件2 sed -n -e ‘编辑指令’ 文件1 文件2 s -i -e ‘编辑指令’ 文件1 文件2 -e 指定要执行的命令 只有一个编辑命令时可省略 -n 只输出处理后的行,读入时不显示 -i 直接编辑文件,而不输出...

weixin_43557605的博客 350

leetcode 195. 第十行

给定一个文本文件 file.txt,请只打印这个文件中的第十行。 示例: 假设 file.txt 有如下内容: Line 1 Line 2 Line 3 Line 4 Line 5 Line 6 Line 7 Line 8 Line 9 Line 10 你的脚本应当显示第十行: Line 10 说明: 如果文件少于十行,你应当输出什么? 至少有三种不同的解法,请尝试尽可能多的方法来解题。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/tent

天使之翼 330

linux shell 脚本攻略第3版 读书笔记

第2章 1shell会扩展没有引号或是出现在双引号(")中 的通配符。单引号能够阻止shell扩展*.txt,使得该字符串能够原封不动地传给find命令。 2find 命令 如果需要用到正则表达式使用单引号'' 例如:查找/home/slynux下面 所有以txt结尾的文件并打印出来 find /home/slynux -name '*.txt' -print find命令有一个选项-ina...

a1779078902的博客 1748

学会看日志文件处理问题

rsyslog是一个进程,是一个命令。管理日志的。–》系统日志记录器 它有一个配置文件:/etc/rsyslog.conf 自己创建日志时,要修改该配置文件。 日志的作用: 用于记录系统、程序运行中发生的各种事件; 通过阅读日志,有助于诊断和解决系统故障 日志文件的分类: 内核及系统日志 由系统服务rsyslog统一进行管理,日志格式基本相似 用户日志 记录系统

阿鹏的笔记 1万+
上一篇: maven+springMVC+mybatis+junit详细搭建过程(转)
下一篇: (转)Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
wangshuxing
博客等级 码龄20年 5粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值