温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Linux的awk命令怎么使用

发布时间:2022-01-22 12:08:00 来源:亿速云 阅读:158 作者:iii 栏目:开发技术

今天小编给大家分享一下Linux的awk命令怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

Linux的awk命令怎么使用

awk是一款文本分析工具awk相对于grep、sed来说显得尤为强大,awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息。

awk内置变量

 ARGC        命令行参数个数``ARGV        命令行参数排列``ENVIRON      支持队列中系统环境变量的使用``FILENAME      ``awk``浏览的文件名``FNR        浏览文件的记录数``FS         设置输入域分隔符,等价于命令行 -F选项``NF         浏览记录的域的个数``NR         已读的记录数``OFS        输出域分隔符``ORS        输出记录分隔符``RS         控制记录分隔符``$0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。
 $NF是number finally,表示最后一列的信息,跟变量NF是有区别的,变量NF统计的是每行列的总数

常用的命令展示

awk擅长列输出

搜索/etc/passwd有root关键字的所有行

 awk` `'/root/'` `/etc/passwd` `【这种是pattern的使用,匹配了pattern(这里是root)的行才会执行action(没有指定action,默认输出每行的内容)】

Linux的awk命令怎么使用

搜索/etc/passwd有root关键字的所有行,并显示对应的shell

 awk` `-F: ``'/root/ {print $7}'` `/etc/passwd

Linux的awk命令怎么使用

统计/etc/passwd:文件名,每行的行号,每行的列数,对应的完整行内容:

 awk` `-F ``':'` `'{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}'` `/etc/passwd

Linux的awk命令怎么使用

使用printf替代print,可以让代码更加简洁,易读

 awk` `-F: ``'{printf ("filename:%10s, linenumber:%3s,column:%3s,content:%3f\n",FILENAME,NR,NF,$0)}'` `/etc/passwd

Linux的awk命令怎么使用

打印/etc/passwd/的第二行信息

 awk` `-F: ``'NR==2{print "filename: "FILENAME, $0}'` `/etc/passwd

Linux的awk命令怎么使用

awk的过滤使用方法

 ls` `-lF | ``awk` `'/^d/'

Linux的awk命令怎么使用 指定特定的分隔符,查询第一列

 awk` `-F ``":"` `'{print $1}'` `/etc/passwd

Linux的awk命令怎么使用 指定特定的分隔符,查询最后一列

 awk` `-F ``":"` `'{print $NF}'` `/etc/passwd

Linux的awk命令怎么使用 指定特定的分隔符,查询倒数第二列

 awk` `-F ``":"` `'{print $NF-1}'` `/etc/passwd

Linux的awk命令怎么使用 获取第12到31行的第一列的信息

 awk` `-F ``":"` `'{if(NR12) print $1}'` `/etc/passwd

Linux的awk命令怎么使用

多分隔符的使用:

 [root@localhost ftl]``# awk -F "[/]" 'NR == 4 {print $0,"\n",$1}' /etc/passwd``这里以/为分隔符,多个分隔符利用[]然后在里面写分隔符即可

Linux的awk命令怎么使用

添加了BEGIN和END

 [root@localhost ftl]``# cat /etc/passwd | awk -F: 'BEGIN{print "name, shell"} {print $1,$NF} END{print "hello world"}'

Linux的awk命令怎么使用

查看最近登录最多的IP信息

 [root@localhost ftl]``# last | awk '{S[$3]++} END{for(a in S ) {print S[a],a}}' |uniq| sort -rh

Linux的awk命令怎么使用

利用正则过滤多个空格

 [root@localhost ~]``# ifconfig |grep eth* | awk -F '[ ]+' '{print $1}'

Linux的awk命令怎么使用

awk编程–变量和赋值

除了awk的内置变量,awk还可以自定义变量, awk中的循环语句同样借鉴于C语言,支持while、do/while、for、break、continue,这些关键字的语义和C语言中的语义完全相同。

统计某个文件夹下的大于100k文件的数量和总和

 ls` `-l|``awk` `'{if($5>100){count++; sum+=$5}} {print "Count:" count,"Sum: " sum}'` `【因为``awk``会轮询统计,所以会显示整个过程】``ls` `-l|``awk` `'{if($5>100){count++; sum+=$5}} END{print "Count:" count,"Sum: " sum}'` `【天界END后只显示最后的结果】
 备注:count是自定义变量。之前的action{}里都是只有一个print,其实print只是一个语句,而action{}可以有多个语句,以;号隔开

Linux的awk命令怎么使用

统计显示/etc/passwd的账户

 awk` `-F: ``'{count++;} END{print count}'` `/etc/passwd`    `cat` `/etc/passwd``|``wc` `-l``awk` `-F ``':'` `'BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i 通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。以上就是良许教程网为各位朋友分享的Linux系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你!

以上就是“Linux的awk命令怎么使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI