【shell】正则表达式语法

本文介绍了正则表达式的应用及sed命令的基本用法,包括如何使用sed进行文本搜索、替换、删除等操作。此外,还详细解释了如何通过正则表达式定位特定的文本模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正则表达式的三种类别
这里写图片描述
这里写图片描述
这里写图片描述
下面举几个例子
查找文件中的IP地址

egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' file

查找文件中的邮箱地址

egrep '[a-zA-Z0-9]+\@[a-zA-Z0-9]+\.[a-zA-Z0-9]' file

sed命令
sed命令的基本格式为:
sed option ‘script’ file1 file2 …
sed option -f scriptfile file1 file2 …
sed处理的文件既可以由标准输入重定向得到,也可以当命令行参数传入,命令行参数可以一次传 入多个文件,sed会依次处理。sed的编辑命令可以直接当命令行参数传入,也可以写成一个脚本文件然后加-f参数指定,编辑命令的格式为
/pattern/action
1. /pattern/p :打印匹配pattern的行
查找文件中以ad开头的行

sed -n '/^ad/p' file
  1. /pattern/d :删除匹配pattern的行
    删除以a结尾的行
sed '/a$/d' file

删除以q开头的行

 sed '/^q/d' file
  1. /pattern/s/pattern1/pattern2/:查找符合pattern的行,将该行第行个匹配pattern1的字符串替换为pattern2
 sed '/a$/s/a/~a~/p' file
  1. /pattern/s/pattern1/pattern2/g:查找符合pattern的行,将该行所有匹配pattern1的字符串替换为pattern2
sed '/a$/s/a/~a~/pg' file

5.在sed 后加 -i 会对原文件进行更改,不加则不会,这里不再演示
6. 定址
定址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定地址,sed将处理输入文件的所有行。
打印第三行

sed -n '3p' file

打印2-5行

sed -n '2,5p' file

正则表达式


^:行首定位符:/^a/ 匹配所有以a开头的行
$:行首定位符:/a$/ 匹配所有以a结尾的行

.:匹配除换行符以外的单个字符:/f..w/ 匹配包含字母f,后跟两个任意字符,再跟字母w的行

sed -n /f..w/g file

:匹配零个或多个前导字符:/ab/ 匹配包含string a,后跟零个或多个b字母的行

sed -n /ab*/p file

[]:匹配指定字符组内的任意字符 :/t[eE]st/ 匹配包含test或tEst的行

sed -n /t[eE]st/p file 

[^]:匹配不在指定字符组内的任意字符:/t[^eE]st/ 匹配string 以t开头,但st之前的那个字符不是e或E的行

sed -n /t[^eE]st/p file

(..):保存已匹配的字符: 标记元字符之间的模式,并将其保存为标签1,之后可以使用\1来引用它。最多可以定义9个标签,从左边开始编号,最左边的是第一个。此例中,对第1到第10个进行处理,tes被保存为标签1,如果发现tes,则替换为testttt。

$ sed  '1,10s/\(tes\)t/\1tttt/g' file
&:保存查找串以便在替换串中引用:s/test/*&*/g 符号&代替查找串。test将被替换为*test*
sed  '1,10s/test/*test*/g' file
\<:词首定位符:/\<a/ 匹配包含以a开头的单词的行
sed '/\<a/p' file
\>:词尾定位符:/a\>/ 匹配包含以a结尾的单词的行
sed '/\a/>/p' file

x{m}:连续m个x:/9{5}/ 匹配包含连续5个9的行
sed ‘/9{5}/p’ file

x{m,}:至少m个x:/9{5,}/ 匹配包含至少连续5个9的行

x{m,n}:至少m个,但不超过n个x:/9{5,7}/ 匹配包含连续5到7个9的行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值