linux awk合并文件内容,awk实际应用:文本合并
请使用awk命令将如下两份文件中名字相同的两行合并起来
[root@localhost ~]# cat 1.txt
韩海林 21岁
海林韩 23岁
韩林海 22岁
林海韩 24岁
[root@localhost ~]# cat 2.txt
韩林海 男
海林韩 男
韩海林 男
林海韩 男
输出效果:
韩海林 21岁 男
[root@localhost ~]# awk 'NR==FNR{a[$1]=$2}NR>FNR{print $0,a[$1]}' 2.txt 1.txt
韩海林 21岁 男
海林韩 23岁 男
韩林海 22岁 男
林海韩 24岁 男
[root@localhost~]# awk 'NR==FNR{a[$1]=$2}NR>FNR{print $0,a[$1]}' 2.txt 1.txt > 3.txt
[root@localhost ~]# cat 3.txt
韩海林 21岁 男
海林韩 23岁 男
韩林海 22岁 男
林海韩 24岁 男
解释:
在awk里,NR和FNR的含义相近,唯一的区别就是作用范围,NR是所有读取的行信息计数,而FNR是正在读取文件的行信息计数,FNR在文件切换时会从0重新开始计数,所以上述语句的意思是:
NR==FNR NR最大值为4,FNR值为1-4,以2.txt的第一个数据项为key,$2即第2列为数据组成数组;
NR>FNR 此时NR=(2.txt的总行数+FNR),NR最大值为8,FNR则重新从1-4计数,判断第一个数据项在不在2.txt数据组成的数组里,如果在,则打印本行加数组项。
NR是英文number of record的简写,就是awk每从文件或输入流中读入一行数据,就把这个变量加一。这个是awk自带的变量。
其他的解释:
NR==FNR{a[$1]=$2}
打开第一个文件2.txt,把文件里面的$2列的内容存入到a[$1]这个数组。
NR>FNR{print $0,a[$1]}
然后打开第二个文件,打印1.txt一行内容,然后打印第一个文件a[$1]数组的内容。
加入if判断,更容易理解,上面的命令省略了;判断1.txt的第一列内容在a数组里面,打印整行内容和a[$1]数组内容;
[root@localhost ~]# awk 'NR==FNR{a[$1]=$2;next}NR>FNR{if($1 in a)print $0,a[$1]}' 2.txt 1.txt
韩海林 21岁 男
海林韩 23岁 男
韩林海 22岁 男
林海韩 24岁 男
文件顺序不同,结果也不同;
[root@localhost ~]# awk 'NR==FNR{a[$1]=$2}NR>FNR{print $0,a[$1]}' 1.txt 2.txt
韩林海 男 22岁
海林韩 男 23岁
韩海林 男 21岁
林海韩 男 24岁
linux awk合并文件内容,awk实际应用:文本合并相关推荐
- linux shell 编辑文件内容,Shell编辑与文本处理(Bash sed文本编辑)
释放双眼,带上耳机,听听看~! 1 sed 命令格式 sed 的全称是 stream editor,也就是流编辑器.其作用便是将文本文件或来自于管道符传入的输入流做文本的处理,如替换.增加内容.删除内 ...
- linux命令看文件内容,Linux文件内容查看相关命令
1.more命令 在Linux中,more命令是一个基于vi编辑器的文本过滤器,它能以全屏的方式按页显示文本文件的内容,more里面内置了一些快捷键. (1)命令语法 more(选项)(参数) (2) ...
- Linux下查看文件内容
Linux下查看文件内容的命令 1.cat 与 tac.nl cat的功能是将文件从第一行开始连续的将内容输出在屏幕上.但是当文件过大行数比较多时,屏幕无法全部容下时,只能看到一部分内容. cat [ ...
- linux view查看日志命令,linux查看日志文件内容命令tail、cat、tac、head、echo、vi
linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log 你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, --------- ...
- java查看日志命令_[Java教程]【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo...
[Java教程][Linux]linux查看日志文件内容命令tail.cat.tac.head.echo 0 2017-11-14 12:00:29 linux查看日志文件内容命令tail.cat.t ...
- linux view查看日志命令,【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo...
linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log 你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, --------- ...
- 【Linux】查看文件内容的相关命令总结
在Linux下面查看文件内容,不像windows那么方便,双击鼠标就可以搞定.在linux下面,所有一切都是文件,需要用命令来打开. 有许多命令都可以查看文件,不同的命令有不同的优点,可以针对不同的需 ...
- linux查看日志文件内容命令tail、cat、tac、head、echo、vi
linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log 你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, --------- ...
- Linux常用查看文件内容命令
Linux下查看文件内容的命令 cat 由第一行开始显示内容,并将所有内容输出 tac 从最后一行倒序显示内容,并将所有内容输出 more 根据窗口大小,一页一页的显示文件内容 less 和more类 ...
最新文章
- RabbitMQ基本概念(一)-RabbitMQ的优劣势及产生背景
- poe交换机的作用和优点
- Android中如何下载文件并显示下载进度
- OpenResty(nginx)操作mysql的初步应用
- 错误: 非法字符: ‘\ufeff‘ 解决方案
- 50行python代码自动生成文章_如何通过50行Python代码获取公众号全部文章
- day39-Spring 14-Spring的JDBC模板:DBCP连接池配置
- VMWare 装mac os x 一个必备优化神器 beamoff
- 统计学中抽样调查和一些常用的方法
- 2019最新天善智能python3数据分析与挖掘项目实战(完整)
- qt无边框窗体的移动
- css3中-moz、-ms、-webkit意思
- 协会分享 | 如何推动EOS区块链技术在高校的落地
- cerebro 通过https访问ES docker集群
- Linux下Watchdog
- 电脑重启后IDEA导包报错
- 《CSDN博客搬家》
- 【Simulink教程案例5】基于Simulink的MPC控制器设计与实现
- react引入百度地图详解(配置智能检索反向地址解析获取实际地标)
- 计算机义诊暑期社会实践报告,暑期社会实践 | 免费技术进社区,电脑义诊帮您忙...
热门文章
- R语言与数据的预处理
- 你是不是也像我一样羡慕那些创业成功有自己事业的人,也想跃跃欲试却没有勇气尝试,担心失败
- 贵州西部农产品:正安情寄予白茶
- 使用element-ui的el-tree组件
- [Python] 爬取 材料力学Ⅰ第六版刘鸿文-指导与例题习题解答
- Grid网格布局详细讲解
- 鼎捷T100参数配置与管理篇
- 计算机教案精美图片我收集,人教版三年级信息技术《第十四课 美化图片我来做》教案(精品获奖)...
- rabbimq operation queue.declare caused a channel exception not_found
- 使用百度云AI实现刷脸登录