运维Shell脚本小试牛刀(十二):awk编程尝鲜


运维Shell脚本小试牛刀(一)

运维Shell脚本小试牛刀(二)

运维Shell脚本小试牛刀(三)::$(cd $(dirname $0); pwd)命令详解

运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi_蜗牛杨哥的博客-CSDN博客

Cenos7安装小火车程序动画

运维Shell脚本小试牛刀(五):until循环

运维Shell脚本小试牛刀(六): Shell中的函数认知

运维Shell脚本小试牛刀(七):从函数文件中调用另外一个脚本文件中函数

运维Shell脚本小试牛刀(八): case模式忽略命令行参数大小写演示

运维Shell脚本牛刀小试(九): 重定向操作符“>“及双重定向“>>“

 运维Shell脚本小试牛刀(十)

运维Shell牛刀小试(十一):for循环读取多个命令行参数

运维Shell脚本小试牛刀:awk编程尝鲜


 一: awk简介

       awk是设计用于文本处理,并通常被用作数据提取和报告工具的解释性程序语言。它主要用于各种各样的计算及数据处理任务;awk为处理文件提供了更普遍的计算模型。awk程序典型运用实例是将数据转换成格式化的报表,通常这些数据可能是linux程序产生的日志,而且格式化后报表是一种对系统管理员有用的格式将数据汇总;

      通常awk具有如下的功能

         1)使用变量操作有文本记录和字段组成的文本文件

         2)具有算术及字符串操作符

         3)具有普通的程序设计结构.如循环和条件

         4)生成格式化报告

         5)定义函数

         6)从awk脚本中执行Linux命令

         7)处理Linux命令的结果

         8)更加巧妙的处理命令行的参数

         9)更容易的处理多个输入流


二:基础使用场景小试


准备info.txt文本文件

[root@www awk]# cat info.txt 
Linux - Sysadmin
Databases - Oracle, Mysql etc.
Security - Firewall, Network, Online Security etc.
Cool - Websites
Storage - NetApp, EMC etc.
Productivity - Too Many technologies to explore, no much time available
     


2.1:awk显示文本文件内容

[root@www awk]# awk '{ print }' info.txt 
Linux - Sysadmin
Databases - Oracle, Mysql etc.
Security - Firewall, Network, Online Security etc.
Cool - Websites
Storage - NetApp, EMC etc.
Productivity - Too Many technologies to explore, no much time available
2.2 以文件分隔符'-'匹配记录

[root@www awk]#  awk -F'-' '{ print $0 }' info.txt 
Linux - Sysadmin
Databases - Oracle, Mysql etc.
Security - Firewall, Network, Online Security etc.
Cool - Websites
Storage - NetApp, EMC etc.
Productivity - Too Many technologies to explore, no much time available
[root@www awk]#  awk -F'-' '{ print $1 }' info.txt 
Linux 
Databases 
Security 
Cool 
Storage 
Productivity 
[root@www awk]#  awk -F'-' '{ print $2 }' info.txt 
 Sysadmin
 Oracle, Mysql etc.
 Firewall, Network, Online Security etc.
 Websites
 NetApp, EMC etc.
 Too Many technologies to explore, no much time available
[root@www awk]#  awk -F'-' '{ print $3 }' info.txt 

2.3: 使用正则表达式匹配记录 

如下,以"-"为分隔符,匹配包含"etc" 的记录


[root@www awk]# awk 'BEGIN { FS="-" } $2 ~ "etc" { print $1 }' info.txt 
Databases 
Security 
Storage 
[root@www awk]# awk 'BEGIN { FS="-" } $2 ~ "etc" { print $0 }' info.txt 
Databases - Oracle, Mysql etc.
Security - Firewall, Network, Online Security etc.
Storage - NetApp, EMC etc.
[root@www awk]# awk 'BEGIN { FS="-" } $2 ~ "etc" { print $2 }' info.txt 
 Oracle, Mysql etc.
 Firewall, Network, Online Security etc.
 NetApp, EMC etc.
 

三:从awk脚本中读取awk命令


[root@www awk]# cat secondeAwk.awk 
BEGIN {
 FS="-"
 
}
{ print $2 }


执行脚本:

[root@www awk]# awk -f secondeAwk.awk info.txt 
 Sysadmin
 Oracle, Mysql etc.
 Firewall, Network, Online Security etc.
 Websites
 NetApp, EMC etc.
 Too Many technologies to explore, no much time available
 

猜你喜欢

转载自blog.csdn.net/u014635374/article/details/132941712