Shell脚本正则表达式

正则表达式的概念及特点

概念

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,
这个“规则字符串”用来表达对字符串的一种过滤逻辑。规定一些特殊语法表示字符类、数量限定符和位置关系,然后用这些特殊语法和普
通字符一起表示一个模式,这就是正则表达式(Regular Expression)。
给定一个正则表达式和另一个字符串,我们可以达到如下的目的:

  1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
  2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。

特点

1、灵活性、逻辑性和功能性非常的强;
2、可以迅速地用极简单的方式达到字符串的复杂控制。

基础正则表达式

grep的使用规则:
-n 表示显示行号
-I 表示不区分大小写
-v 表示过滤
[ ] 查找集合字符
查找包含the的字符(准备一个查找文件)
grep -n ‘the’ test.txt
不区分大小写查找包含the的字符
grep -in ‘the’ test.txt
不查找包含the的字符
grep -vn ‘the’ test.txt
利用中括号[ ]来查找集合字符
grep -n ‘sh[io]t’ test.txt
查找包含重复单个字符oo时
grep -n ‘oo’ test.txt
若查找oo前面不是w的字符串
grep -n ‘[^w]oo’ test.txt
若不希望oo前面存在小写字母
grep -n ‘[^a-z]oo’ test.txt
查询以小写字母开头的行
grep -n ‘1’ test.txt
查询不以字母开头的行
grep -n ‘2’ text.txt
查询以.结尾的行
grep -n ‘.$’ test.txt
若想要查询oo、ooo、oooo等字符串,则需要使用星号()元字符等,o表示拥有零个或任意多个o字符,如果时“oo”,则第一个o必须存在,后面的o表示零个或任意多个o字符*
grep -n ‘ooo’ test.txt
查询以w开头d结尾,中间至少一个o
grep -n ‘woo*d’ test.tx
查询以w开头d结尾,中间字符可有可无
grep -n ‘w.*d’ test.txt
查询两个o的字符
grep -n ‘o{2}’ test.txt
查询以w开头d结尾,中间包含两个及两个以上o
grep -n ‘wo{2,}d’ test.txt

查找特定字符

例:从 /opt/httpd.txt文件查找特定子字符“the”所在位置

[root@localhost opt]# grep -i 'the' /opt/httpd.txt 

“-vn” 反向选择。查找不包含“the”字符的行,则需要通过 grep 命令的“-vn”选项实现。

[root@localhost opt]# grep -vn 'the' /opt/httpd.txt 

利用中括号“[]”来查找集合字符

想要查找“shirt”与“short”这两个字符串时,可以发现这两个字符串均包含“sh” 与“rt”
“[]”中无论有几个字符,都仅代表一个字符,也就是说“[io]”表示匹配“i”或者“o”
同时查找到“shirt”与“short”这两个字符串

[root@localhost opt]# echo "shart" >> /opt/httpd.txt
[root@localhost opt]# echo "short" >> /opt/httpd.txt
[root@localhost opt]# echo "shirt" >> /opt/httpd.txt

[root@localhost opt]# grep -n 'sh[ioa]rt' /opt/httpd.txt 
354:shart
355:short
356:shirt


查询连续字符

例:查找包含重复单个字符“oo”

[root@localhost opt]# grep -n 'oo' httpd.txt 

筛选一个‘o’时会出现一个及以上的连续o

[root@localhost opt]# grep -n 'o' httpd.txt 

若查找“oo”前面不是“w”的字符串,只需要通过集合字符的反向选择“[^]”来实现该目的
例:查找test.txt中“oo” 前面不是“w”的字符串

grep –n‘[^w]oo’ test.txt

注:^放在括号里面就是取反,不包含的意思
^放在括号外面就是以什么为开头

连续字符前面不为字母

若不希望“oo”前面存在小写字母,可以使用“grep –n‘[^a-z]oo’test.txt”命令实现
“a-z”表示小写字母,
大写字母则通过“A-Z”表示
连续数字用[0-9]表示

[root@localhost opt]# grep -n '[^a-z]oo' httpd.txt 

查找行首“^”与行尾字符“$

#查看以bash结尾的账户I信息
[root@localhost opt]# grep "bash$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
liu:x:1000:1000:liu:/home/liu:/bin/bash
#查看以root开头的账户信息
[root@localhost opt]# grep "^root" /etc/passwd
root:x:0:0:root:/root:/bin/bash

sed命令常见用法

sed [选项] ‘操作’ 参数
sed [选项] -f scripfile 参数
选项的基本命令如下:
-e script :指定sed编辑命令
-f scriptfile :指定的文件中是sed编辑命令
-h :显示帮助
-n :表示仅显示处理后的结果
-i :直接编辑文本文件
操作的基本命令如下:
a :增加,在当前行下面增加一行指定内容
c :替换,将选定行替换为指定内容
d :删除,删除选定的行
i :插入,在选定行上面插入一行指定内容
p :打印
s :替换,替换指定字符
y :字符转换

输出符合条件的文本

输出第三行
sed -n ‘3p’ test.txt
输出第3-5行
sed -n ‘3,5p’ test.txt
输出所有奇数行
sed -n ‘p:n’ test.txt
输出所有偶数行
sed -n

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值