awk命令是怎样处理多个文件的,awk常用命令有哪些
Admin 2022-07-26 群英技术资讯 649 次浏览
awk 命令中NR表示从awk开始执行后,按照记录分隔符读取的数据次数,默认的记录分隔符为换行符,因此默认的就是读取的数据行数,NR可以理解为Number of Record的缩写。
在awk处理多个输入文件的时候,在处理完第一个文件后,NR并不会从1开始,而是继续累加,因此就出现了FNR,每当处理一个新文件的时候,FNR就从1开始计数,FNR可以理解为File Number of Record。
下面看两个例子:
1,对于单个文件NR 和FNR 的 输出结果一样的 :
# awk '{print NR,$0}' file1 1 a b c d 2 a b d c 3 a c b d #awk '{print FNR,$0}' file1 1 a b c d 2 a b d c 3 a c b d
2,但是对于多个文件 :
# awk '{print NR,$0}' file1 file2 1 a b c d 2 a b d c 3 a c b d 4 aa bb cc dd 5 aa bb dd cc 6 aa cc bb dd # awk '{print FNR,$0}' file1 file2 1 a b c d 2 a b d c 3 a c b d 1 aa bb cc dd 2 aa bb dd cc 3 aa cc bb dd
现在有两个文件格式如下:
#cat account.data 张三|1 李四|2 #cat course.data 1|语文 1|数学 2|英语 2|化学
想要得到的结果是将用户名,帐号和课程在同一行打印出来,如下:
张三|1|语文 张三|1|数学 李四|2|英语 李四|2|化学
执行如下代码
#awk -F \| 'NR==FNR{a[$2]=$0;next}{print a[$1]"|"$2}' account.data course.data
注释:
由NR=FNR为真时,判断当前读入的是第一个文件account.data,然后使用{a[$2]=$0;next}循环将account文件的每行记录都存入数组a,并使用$2第2个字段作为下标引用.
由NR=FNR为假时,判断当前读入了第二个文件course.data,然后跳过{a[$2]=$0;next},对第二个文件cdr的每一行都无条件执行{print a[$1]"|"$2},此时变量$1为第二个文件的第一个字段,与读入第一个文件时,采用第一个文件第二个字段$2为数组下标相同.因此可以在此使用a[$1]引用数组。
1、打印文件的第一列(域) : awk '{print $1}' filename
2、打印文件的前两列(域) : awk '{print $1,$2}' filename
3、打印完第一列,然后打印第二列 : awk '{print $1 $2}' filename
4、打印文本文件的总行数 : awk 'END{print NR}' filename
5、打印文本第一行 :awk 'NR==1{print}' filename
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
linux下alias命令的功能是什么?alias命令是用于设置指令的别名,用户能够利用alias自定指令的别名。那么alias命令的用法是什么呢?alias命令的用法比较简单,本文有给大家介绍语法及示例,接下来我们继续往下看吧。
区别:1、less可以按上下方向键来显示上下内容,而more不能通过上下方向键控制显示;2、less不必读整个文件,加载速度比more更快;3、less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容。
在linux中,less的意思为“翻页查看”,是一个查看文件内容的命令,语法为“less [选项] 文件名”。less命令用于显示文件或命令输出的内容,它一次只显示一个页面,但允许用户在文件中向前和向后导航;使用less命令浏览文件时,既可以向后翻看,也可以向前翻看。
linux是嵌入式操作系统,那么嵌入式操作系统究竟是什么意思呢?其实这个很好理解,本文就给大家来介绍一下嵌入式操作系统
在linux中,ls命令显示的蓝色表示“目录”。ls命令会根据文件的具体类型给文件名配色:1、白色表示普通文件;2、亮绿色表示可执行文件;3、亮红色表示压缩文件;4、蓝色表示目录;5、亮蓝色表示链接文件;6、亮黄色表示设备文件。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008