第十一章——Shell编程
一.基础正则表达式
1.正则表达式与通配符(*,?,[ ]):
2.基础正则表达式:
二.字符截取命令
1.cut字段提取命令:
空格分割时,不知道空格有多少个,无法分割行数,grep -v取反
2. printf命令(严格说不是字符提取命令,搭配awk使用):
printf不能用于直接输出文件内容或用管道符接受上一句的输出,它会把文件当成字符串输出。
注:Linux系统无print命令,只有printf,print只能在awk命令里使用。
3.awk命令:(默认能识别的分割符是制表符和空格)
注:$0表示一行本身,$1表示文件第一列,awk外是单引号,{}里是双引号
注:print自动在后面加一个换行符,printf不会
BEGIN在数据处理之前执行一次
END在数据处理之后执行一次
FS指定分割符,第一列没有分割(默认为空格),先读入后分割
加一个BFGIN在数据处理之前先指定分割符
进行条件筛选
4. sed命令:
可以从管道符接受数据进行修改,可以直接修改命令的结果(而vim不可以)
不加-n会先输出第二行然后输出所有行,一般和-n联立使用输出指定行
在第一行后追加
在行前插入
注:不改变原文件,只修改输出,要修改原文件加-i,加-i时无输出,直接修改了原文件,有一定危险性(最好修改用vim)
不加行号全文找
三.字符处理命令
1.排序命令sort:
2.统计命令wc:
四.条件判断
1.按照文件类型进行判断:
2.按照文件权限进行判断:
3.两个文件之间进行比较:
4.两个整数之间比较:
5.字符串的判断:
注:[ ]中括号两边有空格,否则会报错,还有==两边也有空格,不然一直为True输出yes
6.多重条件判断:
五.流程控制
1. if语句:
(1)单分支if条件语句:
例子:判断分区使用率:
(2)双分支if条件语句:
例子2:判断apache是否启动
(3)多分支if条件语句:
2. case语句:
3. for循环:
更利于系统的维护和管理
4. while循环:
注:shell脚本语言(所见即所得)写的所有的脚本都不需要编译就可以直接运行,不是不需要编译,是在执行的同时进行编译,简化了编译过程。好处是编译更加简单,坏处是效率要更慢(主要工作是帮助管理员进行重复操作或运维工作)。