shell编程四剑客之awk

awk是Linux/UNIX环境中强大的数据处理工具,用于处理文本行。它基于模式匹配,通过内置变量、函数和操作符进行数据操作。文章介绍了awk的基本语法、内置变量、函数、操作符、流程控制和实战应用,如打印文件特定列、进行数据统计和格式化输出。
摘要由CSDN通过智能技术生成

shell编程四剑客之awk
awk是一个优良的文本处理工具,Linux及UNIX环境中现有的功能最强大的数据处理引擎之一,以Aho、Weinberger、Kernighan三位发明者名字首字母命名为awk,awk是一个行级文本高效处理工具,awk经过改进生成的新的版本有nawk、gawk,一般Linux默认为gawk,gawk是awk的GNU开源免费版本。
awk基本原理是逐行处理文件中的数据,查找与命令行中所给定内容相匹配的模式,如果发现匹配内容,则进行下一个编程步骤,如果找不到匹配内容,则继续处理下一行。其语法参数格式如下:

awk常用参数、变量、函数详解如下。
(1)awk基本语法参数详解如下:
•□ 单引号’'是为了和shell命令区分开。
•□ 大括号{}表示一个命令分组。
•□ pattern是一个过滤器,表示匹配pattern条件的行才进行action处理。
□ action是处理动作,常见动作为print。
•□ 使用#作为注释,pattern和action可以只有其一,但不能两者都没有。
(2)awk内置变量详解如下:
•□ FS:分隔符,默认是空格。
•□ OFS:输出分隔符。
•□ NR:当前行数,从1开始。
•□ NF:当前记录字段个数。
•□ $0:当前记录。
•□ $1~$n:当前记录第n个字段(列)。
(3)awk内置函数详解如下:
•□ gsub(r,s):在$0中用s代替r。
•□ index(s,t):返回s中t的第一个位置。
•□ length(s):s的长度。
•□ match(s,r):s是否匹配r。
•□ split(s,a,fs):在fs上将s分成序列a。
•□ substr(s,p):返回s从p开始的子串。
(4)awk常用操作符、运算符及判断符,详解如下:
•□ ++--:增加与减少(前置或后置)。
•□ ^∗∗:指数(右结合性)。
•□ !+-:非、一元(unary)加号、一元减号。
•□ +-∗/%:加、减、乘、除、余数。
•□ ===!==:数字比较。
•□ &&:逻辑and。
□ ‖:逻辑or。
•□ =+=-=∗=/=%=^=∗∗=:赋值。
(5)awk与流程控制语句如下:
•□ if(condition){}else{};
•□ while{};
•□ do{}while(condition);
•□ for(init;condition;step){};
•□ break/continue。
(1)awk打印硬盘设备名称,默认以空格为分割,代码如下:
df -h|awk ‘{print $1}’
(2)awk以空格、冒号、\t、分号为分割,代码如下:

(3)awk以冒号分割,打印第一列,同时将内容追加到/tmp/awk.log下,代码如下:

(4)打印1.txt文件中的第3行至第5行,NR表示打印行,$0表示文本所有域,代码如下:

(5)打印jfedu.txt文件中的第3行至第5行的第一列与最后一列,代码如下:

(6)打印jfedu.txt文件中长度大于80的行号,代码如下:

(7)awk引用shell变量,使用-v或者双引号+单引号即可,代码如下:

(8)awk以冒号切割,打印第一列同时只显示前5行,代码如下:

(9)awk指定文件jfedu.txt第一列的总和,代码如下:

(10)awk NR行号除以2余数为0则跳过该行,继续执行下一行,打印在屏幕,代码如下:

(11)awk添加自定义字符,代码如下:

(12)awk格式化输出passwd内容,printf打印字符串,%格式化输出分隔符,s表示字符串类型,-12表示12个字符,-6表示6个字符,代码如下:

(13)awk OFS输出格式化\t,代码如下:

(14)awk与if组合实战,判断数字比较,代码如下:

(15)awk与数组组合实战,统计passwd文件用户数,代码如下:

(16)awk分析Nginx访问日志的状态码404、502等错误信息页面,统计次数大于20的IP地址,代码如下:

(17)用/etc/shadow文件中的密文部分替换/etc/passwd中的“x”位置,生成新的/ tmp/passwd文件,代码如下:

(18)awk统计服务器状态连接数,代码如下:

shell编程高级企业实战
企业生产环境中,服务器规模成百上千,如果依靠人工去维护和管理是非常吃力的,基于shell编程脚本管理和维护服务器变得简单、从容,而且对企业自动化运维之路的建设起到极大的推动作用。
本节向读者介绍企业生产环境shell编程案例、自动化备份MySQL数据、服务器信息收集、防止恶意IP访问、LAMP+MySQL主从实战、千台服务器IP修改、Nginx+Tomcat高级自动化部署脚本、Nginx虚拟主机配置、Docker管理平台等内容。
shell编程实战系统备份脚本
日常企业运维中,需要备份Linux操作系统中重要的文件和目录,例如/etc、/boot分区、重要网站数据等,在备份数据时,由于数据量非常大,需要指定高效的备份方案,以下为常用的备份数据方案:
•□ 每周日进行完整备份,周一至周六使用增量备份;
•□ 每周六进行完整备份,周日至周五使用增量备份。
企业备份数据的工具主要有tar、cp、rsync、scp、sersync、dd等工具。以下为基于开源tar工具实现系统数据备份方案。
tar工具手动全备份网站,-g参数指定新的快照文

tar工具手动增量备份网站,-g参数指定全备已生成的快照文件,后续增量备份基于上一个增量备份快照文件,代码如下:

tar工具全备、增量备份网站,shell脚本实现自动打包备份,编程思路如下:
•□ 系统备份数据按每天存放;
•□ 创建完整备份函数块;
•□ 创建增量备份函数块;
•□ 根据星期数判断完整或增量;
•□ 将脚本加入crontab实现自动备份。
tar工具全备、增量备份网站,shell脚本实现自动打包备份,代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值