目录
一、正则表达式
1.基础正则表达式
2.扩展正则表达式
3.linux中文本处理工具
4.基础正则表达式元字符
5.扩充正则表达式元字符
二、grep的选项作用
1.使用grep 查找error 的行
2.过滤出ip(head -1指第一行)
3.统计root字符行总行数
三、sort的选项作用
1.sort后面不加任何字母,默认字母开头排序
2.第三区间数字排列
四、sed
1.sed工具
2.sed命令格式
3.常用选项
案例:输出所有内容
案例:输出第2行,输出第2至第4行
4.操作
5.迁移
案例:将包含the 的行迁移至文件末尾,{;}用于多个操作
五、awk
1.介绍awk
2.工作原理
3.awk的内置变量
4.用法示例
案例:以冒号做分隔符显示分隔后的第五列
5.awk中使用if语句
六:总结
引言:在工作环境里,我们会经常使用网上三剑客:grep、sed、awk,我们要熟练运用并且还需要使用一些小工具,比如grep,sed,awk。
一、正则表达式
1.基础正则表达式
2.扩展正则表达式
2.扩展正则表达式
定义:正则表达式简写为RE(regex),又称为正规表达式、常规表达式,使用字符串来表示,通常用于判断语句中,用来检查某一字符串是否满足某一格式。
3.linux中文本处理工具
grep
egrep
sed
awk
4.基础正则表达式元字符
:转义字符,!、n等
^:匹配字符串开始的位置,比如^a、^the
$:匹配字符串结束的位置,比如word$
.:匹配除n之外的任意字符,比如go.d,g..d
*:匹配前面子表达式0次或者多次,比如goo*d,go.*d
[list]:匹配list列表中的一个字符,比如:go[ola]d、[abc]
[^list]:匹配任意不在list列表中的一个字符,比如:[^a-z]、[^0-9]
{r,m}:匹配前面的子表达式n到m次,有{n}、{n,}、{n,m}三种格式,比如go{2}d
+:匹配前面子表达式1次以上,比如go+d,匹配至少一个o
?:匹配前面子表达式0次或者1次,比如go?d,将匹配gd或着god
():将括号中的字符串作为一个整体,比如(xyz)+,将匹配xyz整体1次以上,比如xyzxyz
|:以或的方式匹配字条串,比如good|food,将匹配good或者food,g(oo|la)d,将匹配good或者glad。
5.扩充正则表达式元字符
+:匹配前面子表达式1次以上
例:go+d,将匹配至少一个o
?:匹配前面子表达式0次或者1次
例:go?d,将匹配gd或god
():将括号中的字符串作为一个整体
例:(xyz)+,将匹配xyz整体1次以上,如xyzxyz
|:以或的方式匹配字条串
例:good|food,将匹配good或者food
例:g(oo|la)d,将匹配good或者glad
二、grep的选项作用
-e:开启扩展的正则表达式
-c:计算找到‘搜寻字符串’的次数
-i:忽略大小写的不同,所以大小写视为相同
-o:只显示被模式匹配到的字符串
-v:反向选择,亦即显示出没有‘搜寻字符串’内容的那一行,(反向查找,输出与查找条件不相符的行)
--color=auto:可以将找到的关键词部分加上颜色显示
-n:顺便输出行号
1.使用grep 查找error 的行
2.过滤出ip(head -1指第一行)
3.统计root字符行总行数
三、sort的选项作用
+:匹配前面子表达式1次以上 例:go+d,将匹配至少一个o ?:匹配前面子表达式0次或者1次 例:go?d,将匹配gd或god ():将括号中的字符串作为一个整体 例:(xyz)+,将匹配xyz整体1次以上,如xyzxyz |:以或的方式匹配字条串 例:good|food,将匹配good或者food 例:g(oo|la)d,将匹配good或者glad
二、grep的选项作用
-e:开启扩展的正则表达式
-c:计算找到‘搜寻字符串’的次数
-i:忽略大小写的不同,所以大小写视为相同
-o:只显示被模式匹配到的字符串
-v:反向选择,亦即显示出没有‘搜寻字符串’内容的那一行,(反向查找,输出与查找条件不相符的行)
--color=auto:可以将找到的关键词部分加上颜色显示
-n:顺便输出行号
1.使用grep 查找error 的行
2.过滤出ip(head -1指第一行)
3.统计root字符行总行数
三、sort的选项作用
2.过滤出ip(head -1指第一行)
3.统计root字符行总行数
三、sort的选项作用
三、sort的选项作用
-t:指定分隔符,默认使用{Tab}吧,键或者空格分隔
-k:指定排序区域,哪个区间排序
-n:按照数字进行排序,默认是以文字形式排序
-u:等同于uniq,表示相同的数据仅显示一行,注意:如果行尾有空格去重就不成功
-r:反向排序,默认是升序,-r就是降序
-o:将排序后的结果转存至指定文件
-f: 忽略大小写,会将小写的字母都转换为大写字母来进行比较
-b: 忽略每行前面的空格
1.sort后面不加任何字母,默认字母开头排序
2.第三区间数字排列
四、sed
1.sed工具
文本处理工具,读取文本内容,根据指定的条件进行处理,如删除、替换、添加等
可在无交互的情况下实现相当复杂的文本处理操作
被广泛应用于Shell脚本,以完成自动化处理任务
sed依赖于正则表达式。
工作原理:读取→执行→显示
读取: sed从输入流 (文件、管道、标准输入) 中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)
执行:默认情况下,所有的sed命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed命令将会在所有的行上依次执行。
显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。
2.sed命令格式
sed -e ‘编辑指令’ 文件1 文件2......
sed -n -e '编辑指令' 文件1 文件2......
sed -i -e '编辑指令' 文件1 文件2......
sed [选项] ‘操作’ 参数
3.常用选项
-e 指定要执行的命令,只有一个编辑命令时可省略
-n 只输出处理后的行,读入时不显示
-i 直接编辑文件,而不输出结果
-f 用指定的脚本文件来处理输出的文本文件
-r, -E 使用扩展正则表达式
-h或--help 显示帮助
-s 将多个文件视为独立文件,而不是单个连续的长文件流
案例:输出所有内容
案例:输出第2行,输出第2至第4行
4.操作
a:增加,在当前行下面增加一行指定内容
c:替换,将选定行替换为指定内容
d:删除,删除选定的行
i: 插入,在选定行上面插入一行指定内容
p:打印,如果同时指定行,表示打印指定行,如果不指定行,则表示打印所有内容,如果有非打印字符,则以ASCII码输出。其通常与“-n”选项一起使用
s:替换,替换指定字符
y:字符转换
5.迁移
H:复制到剪贴板
g、G:将剪贴板中的数据覆盖/追加至指定行
w:保存为文件
r:读取指定文件
a:追加指定内容
I,i:忽略大小写
案例:将包含the 的行迁移至文件末尾,{;}用于多个操作
五、awk
1.介绍awk
awk是一种功能强大的编辑工具,无交互的情况下实现复杂的文本操作。
命令格式:
awk 选项 ‘模式或者条件{编辑指令}’ 文件1 文件2
awk -f 脚本文件 文件1 文件2
2.工作原理
逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。
sed和awk的区别
sed命令常用于一整行的处理,而awk比较、倾向于将一行分成多个""字段"然后再进行处理。awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。在使用awk命令的过程中,可以使用逻辑操作符"
&& 表示 "与"、|| 表示 "或"、! 表示 "非";还可以进行简单的数学运算,如+、-"、*、/、%、^分别表示加、减、乘、除、取余和乘方
3.awk的内置变量
FS:指定每行文本的字段分隔符,缺省为空格或制表位
NF:当前处理的行的字段个数
NR:当前处理的行的行号(序数)
$0:当前处理的行的整行内容
$n:当前处理行的第n个字段(第n列)
4.用法示例
案例:以冒号做分隔符显示分隔后的第五列
5.awk中使用if语句
awk的if语句也分为单分支、双分支和多分支
单分支为if () {}
双分支为if() {}else{}
多分支为if() {}else if () {}else{}
六:总结
使用sort,sed,awk,可以使我们能操作更多,使用方便。



