Linux“文本三剑客”介绍
grep:过滤,即查找文本内容,常配合正则表达式一起使用
sed:修改文本内容
awk:对行进行取列;自带编程语言,格式是类java
(注:针对的都是文件内容)
grep
都是对行进行处理,方便对日志内容进行过滤筛选
-v:取反
示例:grep -v 'root'
过滤出不含有root的内容
-m 数字n:多个匹配到的内容只取前n行
-n:显示匹配内容以及显示匹配的行号
-o:仅显示匹配到的字符串,不再输出其他内容
-A:after,表示显示匹配到的内容所在行及其后几行
-B:before,表示显示匹配到的内容所在行及其前几行
-C:显示匹配到的内容所在行及前后各几行
-e:实现逻辑或的关系(可以有多个)
-E:使用扩展正则表达式(或者使用egrep命令)
-f:过滤出两个文件相同的内容(以前一个文件为标的)
-r:递归目录下,所有包含过滤内容的文件以及匹配到的内容行,但是不处理软连接
-R:递归目录下,所有包含过滤内容的文件以及匹配到的内容行,可以处理软连接
通配符
通配符匹配的是文件名
*:匹配任意一个或多个字符
?:匹配任意一个字符
[ ]:可以是范围匹配,也可以是单个字符
基本正则表达式
.:元字符,匹配任意单个字符,可以是一个汉字
\:转义字符,加.表示指向单个一个.
\(\):即仅代表一个括号
[ ]:匹配任意范围内的单个字符
[[:blank:]]:匹配空格或者制表符(tab键)
[ ]:只匹配空格
[:space:]:空格、制表符、换行符、回车、各种类型的空白都可以匹配
[:cntrl:]:匹配退格、删除
表示次数
*:表示匹配前面的字符任意次,包括0次,尽可能长地匹配
示例:
.*:匹配前面的字符任意次,但是不包括0次,也就是匹配所有
\?:匹配前面的字符出现0次或者1次(有且只有一次)
\+:匹配前面出现的字符,至少出现一次,也就是>=1
\{n\}:匹配前面出现的字符等于几次
\{m,n\}:匹配前面出现的字符最少是m次,最多是n次
\{,n\}:匹配前面的字符最多n次,没有也算
\{n,\}:匹配前面的字符组最少n次,只要连续出现n次,后面的都算
拓展示例:
位置锚定
^:行首锚定,以什么为开头
$:行尾锚定,以什么为结尾
示例:
^root$:匹配行模式
^$:空白行
^[[:space:]]*$:空白行
\ < 或者 \b:词首锚定,一般用于匹配单词模式的左侧
\ > 或者 \b:词尾锚定,一般用于匹配单词模式的右侧
\root\b或者 \<root\>:匹配整个单词
():分组
\ |:逻辑或
综合练习
1、高亮显示座机电话号码
2、高亮显示邮箱
3、高亮显示qq邮箱(qq号为0-9位并遵守qq邮箱格式)
4、高亮显示不同格式的数字
5、高亮显示/etc/inittab文件中以s开头并以d结尾的单词
6、高亮显示passwd文件中冒号及其两侧的字符