linux学习20 运维核心技能-grep命令与基本正则表达式
Posted Presley
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux学习20 运维核心技能-grep命令与基本正则表达式相关的知识,希望对你有一定的参考价值。
一、回顾
1、bash的特性:hash,变量
命令hash:hash命令
变量:
本地变量,环境变量,局部变量
位置参数变量,特殊变量
变量赋值:name=value,export name=value,declare -x name=value
变量引用:$name,${name}
变量撤销:unset name
2、bash脚本编程,运行脚本
#!/bin/bash
#
3、bash的配置文件
profile类:登陆式shell
bashrc类:非登录式shell
登录式shell: /etc/profile --> /etc/profile.d/* --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非登录式shell:~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
二、文本处理工具
1、Linux上文本处理三剑客
a、grep:文本过滤工具(模式:pattern)工具。
b、sed:stream editor,流编辑器;文本编辑工具;
c、awk:Linux上的实现为gawk,文本报告生成器(格式化文本);
2、正则表达式:Regual Expression,REGEXP
a、由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表示控制或通配的功能;
b、基本正则表达式:BRE
c、扩展正则表达式:ERE
d、元字符
三、文本处理工具之grep
1、grep:Global search REgular expression and Print out the line。
作用:文本搜索工具,根据用户指定的"模式(过滤条件)"对目标文本逐个进行匹配检查;打印匹配到的行;
模式:由正则表达式的元字符及文本字符所编写出的过滤条件;
2、正则表达式引擎:
grep [OPTIONS] PATTERN [FILE]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
3、常见选项
--color=auto:对匹配到的文本着色后高亮显示
-i: Ignorecase:忽略字符的大小写
-o:仅显示匹配到的字符串本身
-v:--Invert-match:显示不能被模式匹配到的行
-E:支持使用扩展的正则表达式元字符
-q:--quiet,silent:静默模式,即不输出任何信息
[root@node1 ~]# grep -q UUID /etc/fstab [root@node1 ~]# echo $? 0 [root@node1 ~]# grep -q UUIID /etc/fstab [root@node1 ~]# echo $? 1
-A #:after,即显示匹配到的和后两行
[root@node1 ~]# grep -A 2 "root" /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin -- operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
-B #:before,即显示匹配到的和前两行
[root@node1 ~]# grep -B 2 "root" /etc/passwd root:x:0:0:root:/root:/bin/bash -- halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin
-C #:显示前后各两行
[root@node1 ~]# grep -C 2 "root" /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin -- halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
4、基本正则表达式元字符
a、字符匹配
.:匹配任意单个字符
[root@node1 ~]# grep "r..t" /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin tomcat:x:53:53:Apache Tomcat:/usr/share/tomcat:/sbin/nologin
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
[:dlgit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:]、[:punct:]、[:space:]
b、匹配次数:用在要指定其出现的次数的字符的后面,用于限制其前面字符出现的次数,默认工作于贪婪模式
*:匹配其前面字符任意次:0,1,多次
例如:grep "x*y"
abxy:可以匹配到
aby:可以匹配到
xxxxxy:可以匹配到
yab:可以匹配到
.*:匹配任意长度的任意字符
?:匹配其前面的字符0次或1次,其前面字符是可有可无的
[root@node1 ~]# grep "x*y" grep.txt abxy aby xxxxxy yab [root@node1 ~]# grep "x?y" grep.txt abxy aby xxxxxy yab
+:匹配其前面的字符1此或多次;即前面的字符至少要出现1次
[root@node1 ~]# grep "x+y" grep.txt abxy xxxxxy
{m}:匹配前面字符m次
[root@node1 ~]# grep "x{1}y" grep.txt abxy xxxxxy [root@node1 ~]# grep "x{2}y" grep.txt xxxxxy
{m,n}:匹配其前面的字符至少m次,至多n次;
[root@node1 ~]# grep "x{2,5}y" grep.txt xxxxxy
{0,n}:至多n次
{m,}:至少m此
c、位置锚定
^:行首锚定:用于模式的最左侧
$:行尾锚定:用于模式的最右侧
^PATTERN$:用于PATTERN来匹配整行
^$:空白行;
^[[:space:]]*$:空行或包含空白字符的行
单词:
d、分组及引用
1:01:46
以上是关于linux学习20 运维核心技能-grep命令与基本正则表达式的主要内容,如果未能解决你的问题,请参考以下文章