shell 第五天

第五天shell编程
三剑客详解
1 grep 默认不支持扩展表达式, 加-E 如不加-E使用花括号要加转义符{}
egrep 支持基础和扩展表达式
2 awk支持egrep所有的正则表达式
3 sed 默认不支持扩展表达式 加-r 选项开启ERE 。如果
不加-r 使用花括号要加转义符{}

A sed 语法格式
sed [ options] [sed 命令] [输入文件]
说明:
1 注意sed软件以及后面选项,sed命令和输入文件,每个元素
之间都至少有一个空格。
2 sed -commands
seded软件内置的一些命令选项,为了和前面的options区分,故称为sed命令
3 sed
-commands既可以是单个sed命令,也可以是多个sed命令组合
4 inPut -file (输入文件)是可选项,sed还能够从标准输入管道获取输入

sed 的工作原理

sed读取一行,首先将这行放入到缓冲中
然后,进行处理,处理完成以后,将缓冲区的内容发送到终端,存储sed读取到的内容缓存区空间称之为:模式空间

选项说明
option:-n 默认不输出,常与sed命令p连用
-e 一行命令语句可执行多条sed命令
-r 扩展正则表达式,默认情况sed只识别基本正
则表达式
-i 修改文件内容,不输出终端
sed -commands [sed命令]
a 追加,在指定行后添加一行或多行文本
c 取代指定的行
d 删除指定的行
i 插入,在指定行前添加一行或多行文本
p 打印模式空间内容,通常p会与选项-n 一起使用

特殊符号
! 对指定行以外的所有行应用命令
sed的增删改查
A 增 a 追加文本到指定行后 apend
i 插入文本到指定行前 insert
B 删
d 删除文本
C 改
c 新代旧

sed 文本替换功能
sed软件80% 的场景就是使用替换功能
这里用到sed命令
[options] :
s 单独使用,将每一行中第一处匹配的
字符串进行替换==>sed
g 每一行进行全部替换-->sed命令s的替换
标志 之一
i 修改文件内容,注意和sed命令i的区别
sed -i's/ 目标内容/替换内容 / g'ken.log
sed -i's#目标内容#替换内容#g'
D 查
p (print)输出指定内容,但默认会输出2次匹配结果,因此使用-n
选项取消默认输出


I awk详解{
awk 指令由模式,动作,或者模式和动作的组合组成
模式=>pattern,可以理解成sed模式匹配
动作 action。由大括号里面的一条或多条语句组成,语句之间使用分号隔开。
比如: awk [ options] 'pattern {action}' file
awk 处理的内容可以标准输入(<),一个或多个文本文件或管道
比如:
'pattern {action}'
解释:pattern,可以理解为条件,找谁
action ,理解为干啥
awk 参数
-F :指定分隔符
1 记录(record):一行就是一个记录
2分隔符(field separator)
进行对记录进行切割所使用的字符
3 字段(field):将一条记录分割成的每一段
4 filename :当前处理文件的文件名
FS :字段分隔符(默认以空格为分隔符)
NR:记录的编号 awk 每读取一行 NR就加1==
NF: 字段数量
ORS:指定输出记录分隔符 默认 是换行
OFS :输出字段分隔符
RS : 记录分隔符
输出字段的表示方式
$1 $2 ..$n 输出一个指定的字段
$ NF 输出最后一个字段
$ 0 输出整条记录

}

原文地址:https://www.cnblogs.com/gengyanqi/p/10418534.html