5.shell脚本中常用命令(3)-awk报告生成器
2019-08-18 17:18
851 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sheena_/article/details/99705068
1.awk报告生成器
AWK是一个优良的文本处理工具(处理文本的编程语言工具),Linux及Unix环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言(其名称得自于它的创始人阿尔佛雷德·艾侯、彼得·温伯格和布莱恩·柯林汉姓氏的首个字母)的最大功能取决于一个人所拥有的知识。awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命令可以查看正在应用的awk的来源(ls -l /bin/awk ) 在最初创造 AWK 时,其目的是用于文本处理,并且这种语言的基础是:只要在输入数据中有模式匹配,就执行一系列指令。该实用工具扫描文件中的每一行,查找与命令行中所给定内容相匹配的模式。如果发现匹配内容,则进行下一个编程步骤。如果找不到匹配内容,则继续处理下一行。 命令是逐一处理文本的
2.awk基本命令
linux上默认使用gawk,命令是逐一处理文本
的
命令 | 说明 |
---|---|
awk '{print FILENAME}' passwd |
输出文件名(文件中的内容有多少行就打印多少次) |
cat -b passwd查看到文件内容并显示行数
命令 | 说明 |
---|---|
awk '{print NR}' passwd |
输出文本行数 |
awk -F : '{print NF}' passwd |
以:为分隔符,输出文本列数 |
命令 | 说明 |
---|---|
awk -F : 'BEGIN{print "NAME"}{print $1}END{print "END"}' passwd |
以:为分隔符输出文本第1列,并在开始输出“NAME”,在结尾输出“END”字符 |
awk -F : 'BEGIN{print "NAME"}{print $1,$5}END{print "END"}' passwd |
以:为分隔符打印文本第1列和和第5列,并在开始输出“NAME”,在结尾输出“END”字符 |
awk -F : 'BEGIN{print "NAME"}{print $0}END{print "END"}' passwd |
以:为分隔符输出文本全部列,并在开始输出“NAME”,在结尾输出“END”字符 |
awk -F : 'BEGIN{print "NAME"}{print $1="";print $0}END{print "END"}' passwd |
以:为分隔符打印文本的2-7列($1=""第一列为空),并在开始输出“NAME”,在结尾输出“END”字符 |
命令 | 说明 |
---|---|
awk '/bash$/{print}' passwd |
输出以bash结尾的文本内容 |
awk '!/bash$/{print}' passwd |
输出不以bash结尾的文本内容 |
awk '!/bash$ /&&!/nologin$ /{print}' passwd |
输出不以bash结尾且不以nologin结尾的文本内容 |
awk '/bash$/||/nologin$/{print}' passwd |
输出以bash结尾或以nologin结尾的文本内容 |
命令 | 说明 |
---|---|
awk 'BEGIN{n=0}/nologin$/{n++}END{print n}' passwd |
统计文本以nologin结尾的行数(n为变量,初始值为0,符合‘以nologin为结尾‘的要求,则n+1,最终输出n的值) |
awk '/nologin$/{print}' passwd
命令 | 说明 |
---|---|
awk 'BEGIN{n=0}{n++}END{print n}' /etc/passwd |
统计文本内容行数 |
命令 | 说明 |
awk '/^r/{print}' passwd |
输出文本中以r开头的内容 |
awk '/^[a-f]/{print}' passwd |
输出文本中以a/b/c/d/f开头的内容 |
命令 | 说明 |
---|---|
awk -F : '$6~/bin/{print}' passwd |
以:为分隔符,输出第6列有‘bin‘的文本内容 |
awk -F : '$6~/\<bin/{print}' passwd |
以:为分隔符,输出第6列是‘bin‘的文本内容 |
awk -F : '$6!~/\<bin/{print}' passwd |
以:为分隔符,输出第6列不是‘bin‘的文本内容 |
3.测试
(1)输出能登陆系统的用户名称
awk -F : 'BEGIN{print "NAME"}/bash$/||/sh$/||/tcsh$/||/csh$/{print $1}' /etc/passwd
(2)输出能登陆系统但家目录不在/home的用户个数
awk -F : 'BEGIN{n=0}(/bash$/||/sh$/||/tcsh$/||/csh$/)&&$6!~/^\/home/{print;n++}END{print n}' /etc/passwd
(3)抓取eth0网卡的ip
ifconfig eth0 | awk '/inet\>/{print $2}
``
相关文章推荐
- 详解Shell脚本:sed命令工具 ,awk命令工具
- shell__常用命令__awk
- linux常用命令 和shell脚本(必知)
- SHELL 脚本----常用的命令
- Shell脚本学习(特殊符号、常用命令)
- shell脚本常用命令与方法总结
- 常用的 Mac OS shell脚本和控制台命令
- shell脚本基础与常用命令
- Linux--Shell脚本常用命令
- 关于shell中常用的命令cut awk sed printf xargs
- 数据需求统计常用shell命令---AWK分组求和,分组统计次数
- SHELL常用命令与脚本
- Shell脚本常用unix命令
- shell脚本常用命令
- Shell中的grep、awk和sed的常用命令和语法
- 使用shell脚本ssh远程执行命令,使用awk时总是报错
- [置顶] linux常用命令与shell脚本编程
- Shell 脚本常用命令
- Shell中的grep、awk和sed的常用命令和语法
- Shell 脚本常用命令