正则表达式+grep

正则表达式是一种用于匹配字符串的模式,常见于文本处理和搜索。元字符如`.`、`*`、`^`、`$`等在表达式中具有特殊含义。文章介绍了基本和扩展类型的正则表达式,包括`grep`、`egrep`的使用,以及Perl内置正则,如`d`、`w`和`s`。通过实例展示了如何进行字符串替换和模式匹配。
摘要由CSDN通过智能技术生成

正则表达式

☆什么是正则表达式

正则表达式(Regular Expression、regex或regexp,缩写为RE):是一种字符模式,用于查找过程中匹配指定字符。
许多程序设计语言都支持正则表达式进行字符串操作
正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。
支持正则表达式的程序如:locate、find、vim、grep、sed、awk

1 第一类正则

1.1 一些名词

元字符:指那些在正则表达式中具有特殊意义的专用字符,如:点(.) 星() 问号(?)等
前导字符:即位于元字符前面的字符,如abc
中的c;bca.中的a

1.2 常用元字符

示例文本:1.txt

ggle
gogle
google
gooogle
goooooogle
gooooooogle
taobao.com
taotaobaobao.com

jingdong.com
dingdingdongdong.com
10.1.1.1
Adfjd8789JHfdsdf/
a87fdjfkdLKJK
7kdjfd989KJK;
bSKJjkksdjf878.
cidufKJHJ6576,

hello world
helloworld yourself
(1). :匹配任意单个字符,除了换行符

在这里插入图片描述

(2)* :前导字符出现0次或者连续多次;*等价于{0,}

在这里插入图片描述

(3).* :匹配任意长度的字符

在这里插入图片描述

(4)^ :行的开头,以...开头

在这里插入图片描述

(5)$ :行的结尾,以...结尾

在这里插入图片描述

(6)^$ :匹配空行

在这里插入图片描述

(7)[] :匹配指定字符组内的任一单个字符

在这里插入图片描述

(8)[^] :匹配不在指定字符组内的任一字符

在这里插入图片描述

(9)^[] :匹配指定字符组内任一字符开头的行

在这里插入图片描述

(10)^[^] :匹配不以指定字符组内任一字符开头的行

在这里插入图片描述

(11)\< :匹配字符的头

在这里插入图片描述

(12)\> :匹配字符的尾

在这里插入图片描述

(13)\<\> :精确匹配字符;等同于grep -w
tips:\<\>需要用单引号或双引号括起来

在这里插入图片描述

(14)\{n\} :匹配前导字符连续出现n次的行

在这里插入图片描述

(15)\{n,\} :匹配前导字符至少出现n次的行

在这里插入图片描述

(16)\{n,m\} :匹配前导字符出现n次到m次之间的行

在这里插入图片描述

 (17) \(strings\) :保存被匹配的字符;使用vi或vim工具
将10.1.1.1换成172.1.1.1
%s/10.1.1.1/172.1.1.1/
%s/10.\(1.1.1\)/172.\1/
	172.\1中的\1表示保留第一个\(\)中的内容
其中'/'可以自定义你想要使用的字符,如#,上方内容就可以写为
	%s#10.\(1.1.1\)#172.\1#

将192.168.0.254 换成 192.168.1.254
vim 1.txt
%s#\(192\.168\)\.0\.\(254\)#\1\.1\.\2#	//底行模式下匹配
	严格意义上#\(192\.168\)\.0\.\(254\)中\.0\.的'\'是转义'.'而存在
%s#\(192.168\).0.\(254\)#\1.1.\2#
(18)Perl内置正则:
\d      匹配数字[0-9]
\w      匹配字母数字下划线[a-zA-Z0-9_]
\s      匹配空格、制表符、换页符[\t\r\n]

在这里插入图片描述

2 扩展类的正则表达式

2.1 语法结构

grep -E
egrep

2.2 扩展正则表达式元字符

(1)+ :匹配一个或多个前导字符;+等价于{1,}

在这里插入图片描述

(2)? :匹配零个或一个前导字符;?等价于{0,1}

在这里插入图片描述

(3)a|b :匹配a或b

在这里插入图片描述

(4)() :组字符

在这里插入图片描述

(5){n} :前导字符重复n次;相当于\{n\}

在这里插入图片描述

(6){n,} :前导字符至少重复n次;相当于\{n,\}

在这里插入图片描述

(7){n,m} :前导字符重复n到m次;相当于\{n,m\}

在这里插入图片描述

3 第二类正则

表达式功能示例
[:alnum:]字母与数字字符[[:alnum:]]+
[:alpha:]字母字符(包括大小写字母)[[:alpha:]]{4}
[:blank:]空格与制表符[[:blank:]]*
[:digit:]数字[[:digit:]]?
[:lower:]小写字母[[:lower:]]{4,}
[:upper:]大写字母[[:upper:]]+
[:punct:]标点符号[[:punct:]]
[:space:]包括换行符,回车等在内的所有空白[[:space:]]+

注意语法格式:

[root@server shell05]# grep -E '^[[:digit:]]+' 1.txt
[root@server shell05]# grep -E '^[^[:digit:]]+' 1.txt
[root@server shell05]# grep -E '[[:lower:]]{4,}' 1.txt

☆来个总结

元字符字符说明示例
*前导字符出现0次或者连续多次ab* abbbb
.除了换行符以外,任意单个字符ab. ab8 abu
.*任意长度的字符ab.* adfdfdf
[]括号里的任意单个字符或一组单个字符[abc][0-9][a-z]
[^]不匹配括号里的任意单个字符或一组单个字符[^abc]
^[ ]匹配以括号里的任意单个字符开头^[abc]
^[^]不匹配以括号里的任意单个字符开头^[^abc]
^行的开头^root
$行的结尾bash$
^$空行
\{n\}和{n}前导字符连续出现n次[0-9]\{3\}
\{n,\}和{n,}前导字符至少出现n次[a-z]{4,}
\{n,m\}和{n,m}前导字符连续出现n-m次go{2,4}
\<\>精确匹配单词\<hello\>
\(\)保留匹配到的字符\(hello\)
+前导字符出现1次或者多次[0-9]+
?前导字符出现0次或者1次go?
|^root|^ftp
()组字符(hello|world)123
\dperl内置正则grep -P \d+
\w匹配字母数字下划线
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值