awk命令是怎样处理多个文件的,awk常用命令有哪些
Admin 2022-07-26 群英技术资讯 1231 次浏览
在这篇文章中,我们来学习一下“awk命令是怎样处理多个文件的,awk常用命令有哪些”的相关知识,下文有详细的讲解,易于大家学习和理解,有需要的朋友可以借鉴参考,下面就请大家跟着小编的思路一起来学习一下吧。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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
SELinux的作用:1、通过对进程和文件资源采用MAC控制方式,为Linux系统提供了改进的安全性;2、赋予了主体最小的访问特权,最大限度地减小系统中服务进程可访问的资源,可以防止主体对其他用户或进程产生不利的影响;3、每个进程都有自己的运行区域,各进程仅运行在自己的域内,无法访问其他进程和文件;4、SELinux能最大程序上限制Linux系统中的恶意代码活动。
linux查看进程并杀死进程的方法:首先使用“ps -aux | grep 程序名称”命令查看相关进程,获取进程号PID;然后使用“kill -9 PID”命令即可杀死进程。
互斥量就是一把锁,在访问数据时能保证同一时间内只有一个线程访问数据,在访问完以后再释放互斥量上的锁。 条件变量是利用线程间共享的
CentOS中nginx负载均衡和反向代理的搭建
这篇文章我们来了解linux下的截取命令,linux截取命令有cut命令、printf命令、awk命令和sed命令,那么具体如何使用呢?下文有很详细的介绍,感兴趣的朋友可以了解看看,那么接下来就跟随小编来一起了解看看吧!
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008