运维Shell脚本小试牛刀(三)::$(cd $(dirname $0); pwd)命令详解
运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi_蜗牛杨哥的博客-CSDN博客
运维Shell脚本小试牛刀(七):从函数文件中调用另外一个脚本文件中函数
运维Shell脚本小试牛刀(八): case模式忽略命令行参数大小写演示
运维Shell脚本牛刀小试(九): 重定向操作符“>“及双重定向“>>“
运维Shell牛刀小试(十一):for循环读取多个命令行参数
一: 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