Shell编程——三剑客
- 简介
Grep:默认不支持扩展表达式,加-E或者egrep
Awk:支持所有zhengze
Sed默认不支持扩展表达式,加-r
2.sed语法格式
Sed 选项 命令 文件(注意sed命令和文件之间空格)
- 工作原理:sed读取一行,首先将其放入缓存。然后处理,处理后,将缓存区的内容发送到终端,存储sed的内容的缓存区称之为模式空间。
Sed -e 多点操作
-r 使用扩展正则使用
-i接修改内容(如果不使用-i选项只是修改内存中的数据,不会影响磁盘文件)
-n 取消默认的文件输出,和p连用
a 追加到后面一行输出文本
c 取代指定的行
i 在制定行前添加(注意和-i的区别)
!指定行以外所有行应用(取反)
d 指定删除的行(如果不指定就默认匹配所有行)
s/目标内容/替换内容/g
p打印选中的行
awk详解
- 定义:用来处理和生成报告
- 格式: awk 参数 ‘条件 动作’
1. NR 行 (行数)
NF 字段(个数)
-F 指定分隔符
$n 输出一个制定的字段
$NF 输出最后一个字段
$0 输出整条记录
awk特殊模式-BEGIN模式与END模式
EGIN模块再awk读取文件之前就执行,一般用来定义我们的内置变量(预定义变量,eg:FS,RS)
需要注意的是BEGIN模式后面要接跟一个action操作块,包含在大括号内。awk必须在输入文件进行任何处理前先执行BEGIN里的动作(action)。我们可以不要任何输入文件,就可以对BEGIN模块进行测试,因为awk需要先执行完BEGIN模式,才对输入文件做处理。BEGIN模式常常被用来修改内置变量ORS,RS,FS,OFS等值。
EHD在awk读取完所有的文件的时候,再执行END模块,一般用来输出一个结果(累加,数组结果),也可以是和BEGIN模块类似的结尾标识信息
与BEGIN模式相对应的END模式,格式一样,但是END模式仅在awk处理完所有输入行后才进行处理。