企业常用Linux正则表达式与三剑客知识

发布于:2024-04-19 ⋅ 阅读:(26) ⋅ 点赞:(0)

企业常用Linux正则表达与三剑客知识

正则表达

处理大量字符串文本定义的一套规则与方法

Linux三剑客正则表达式特点

  1. 工作上,一次处理一行
  2. 正则表达式可以将复杂的任务处理为简单的,提高操作Linux效率
  3. 仅被三剑客(grep/egrep,sed,awk)命令支持

正则表达式:为过滤特殊字符串而生

正则表达式与通配符有本质去别的:
通配符:所有的命令支持
正则表达式只支持三剑客

在centos6 之前是没有这一种标记的,centos7开始官方加上了这个标记(alias egrep=’egrep --color=auto‘)
在这里插入图片描述
在这里插入图片描述

LC_ALL环境变量设置

我们以后在工作中/安装好虚拟机,安装对应的yum/epel/网络工具时候,后面也可以进行配置LC_ALL(三剑客环境变量配置)

建议配置:配置后操作时不会出现异常匹配情况(export LC_ALL=C)
在这里插入图片描述
在命令行输入:
vim etc/profile编辑输入:
export LC_ALL=C并保存
在这里插入图片描述
. /etc/profile运行文件
echo $LC_ALL是否有C显示,有就是成功,否则重新来一遍配置操作
在这里插入图片描述
第二种处理方式:

EOF后面不要用多余的空格:
cat >>/etc/profile<<EOF
alias grep=‘grep --color=auto’
alias egrep=‘egrep --color=auto’
export LCALL=C
注意:eof前后都没有空格和其他符号
EOF
使用修改的内容生效
source /etc/profile

正则表达式的分类

基本正则表达式:
BRE对应的元字符:^$.[]*

扩展正则表达式:
ERE在BRE基础上增加了(){}?+|

基础正则表达式

实验环境:
mkdir ~/test -p
cat >~/test/wulin.txt<<EOF
i am wulin!
i study linux.

i like playgames ,and chinese chess!
my qq num is 99999999.

not 6763873677
EOF

给过滤的内容添加标识,把符合的标识内容过滤
^ 尖角号,^wulin,表示匹配以wulin为单词开头的行
在这里插入图片描述
$ 美元符,wulin$,表示匹配以wulin单词结尾的行
在这里插入图片描述

^ $组合符,表示空行(以 结尾的行)或者以 开头的行
在这里插入图片描述

. 点号,匹配任意的一个且只有一个字符
在这里插入图片描述

\转义符,特殊含义的字符让本有的含义显出原形(不受别的含义干扰)
在这里插入图片描述

(*) 重复前一个字符(来纳许0次或1次以上,当为0次的时候,表示什么也没有)
(0 * )所有的都出来了:
在这里插入图片描述

(. * )匹配所有的内容
在这里插入图片描述

(^. *) 匹配任意多个字符结尾的内容
( . *$)任意多个字符结尾的内容
[abc]匹配[]集合内的任意一个字符a,b,c;

([abc]匹配不包含 后面的任意字符a,b,c
,这里的^表示对[a,b,c]的取反,不能用!进行替代

测试题

1.过滤/etc/passwd中以nologin结尾的行
在这里插入图片描述

2.过滤/etc/passwd中以o开头的行
在这里插入图片描述

3.过滤/etc/passwd中至少含有1个0字符串的行
在这里插入图片描述

4.过滤/etc/目录中(不含子目录)下的所有文件
在这里插入图片描述

5.过滤/etc/services中含有点号的行
grep "." /etc/services

扩展正则

条件:grep -E====egrep
(+)匹配前一个字符1次或多次

区别,可以匹配0次
匹配0个0,或1个0,或多个0
[root@calms test3]# grep "0
" wulin.txt
匹配一个0或多个0
[root@calms test3]# grep “0*” wulin.txt

[ : /]+ 匹配括号内的:或/字符1次或多次
egrep “[: /]+” wulin.txt

egrep -o 参数把匹配的内容放在一列进行打印

?匹配前一个字符0次或1次

| 表示或者,同时过滤多个字符串
egrep “000|wulin” wulin.txt

0 分组过滤括起来的东西表示一个整体,另外0的内容可以被后面的\n进行引用,n为数字,表示引用第几个括号的内容

\n 引用前面()括号内的内容

a{n,m}匹配前一个字符最少n次,最多m次

a{n,}匹配前一个字符最少n次

a{n} 匹配前一个字符正好n次

a{,m}匹配前一个字符最多m次

特殊预定义表达式(了解)

在这里插入图片描述

元字符表达式(了解)

在这里插入图片描述
在这里插入图片描述

Sed(stream editor)命令

对文件实现快速增删改查,查询最强大的是取行与替换

取行和替换
sed [选项] [sed内置命令字符] [输入文件]

options[选项] 解释说明

  1. -n取消默认的sed输出,常与sed内置命令的p连用
  2. -i 直接修改文件的内容,而不是输出到终端 如果不使用-i选项sed只是修改在内存中的数据,并不会影响磁盘上的文件
  3. -e 允许多次编辑

p 全拼为print,表示