【精选】shell脚本 | 您所在的位置:网站首页 › shell脚本生成xml文件 › 【精选】shell脚本 |
正则表达式
正则表达式的作用前言案例:使用^和$判断用户输入的是否是数字
基础正则表达式元字符基础正则表达式元字符案例
扩展正则表达式元字符扩展正则表达式元字符案例
正则表达式元字符综合案例三剑客grep详解grep的分类grep的返回值grep的参数egrep示例
正则表达式的作用
正则表达式是一种字符模式,用于在查找过程中匹配指定的字符。它将匹配被查找的的行中任何位置出现的相同模式,在正则表达式中,元字符是最重要的概念正则表达式能够被vim、sed、grep调用正则表达式运用场景 mysql、oracle、php、Python、Apache、Nginx…
前言案例:使用^和$判断用户输入的是否是数字
read -p "输入数字才能退出:" num
if [[ $num =~ ^[0-9]+$ ]] #我们需要掌握的就是正则表达式中的各种符号运用
then
echo "您输入的是数字"
else
echo "您输入的不是数字"
fi
基础正则表达式元字符
元字符作用\转义字符,用于取消特殊符号的含义,如:\!、\n等^匹配字符串的开始位置,如:^world匹配以world开头的行$匹配字符串的结束位置,如:world$匹配以world结尾的行.匹配除\n(换行)之外的任意一个字符*匹配前面的子表达式0次或者多次[list]匹配list列表中的一个字符,如:[0-9]匹配任一位数字[^list]匹配不在list列表中的一个字符,如:[^0-9]匹配任意一位非数字字符\ {n \ }匹配前面的子表达式n次,如:[0-9] \ {2 \ }匹配两位数字\ {n, \ }匹配前面的子表达式不少于n次,如:[0-9]{2,\ }表示两位及两位以上数字\ {n,m \ }匹配前面的子表达式n到m次,如:[a-z]\ {2,3 \ }匹配两到三位的小写字母
元字符是一类字符,他们表达的是不同于字面本身的含义中括号两边都不能空格
基础正则表达式元字符案例
一、^ 行首定位符 [root@pakho ~]# grep "^abc" zzbds.txt abc二、$ 行尾定位符 [root@pakho ~]# grep "x$" zzbds.txt zabbix三、. 匹配任意单个字符 [root@pakho ~]# grep "a.c" zzbds.txt abc javascript adc四、* 匹配前导符0到多次 *在字符右才有意义 修饰前方的字符 前方的字符叫前导符 [root@pakho ~]# grep "ab*" zzbds.txt zabbix abc kali javascript adc abcd abcde abcdef五、.* 任意多个字符 为什么 *. 不好使因为 *是前导符 [root@pakho ~]# grep ".*" zzbds.txt zabbix abc kali centos linux ubuntu python docker k8s javascript六、[ ] 匹配指定范围内的一个字符 [root@pakho ~]# grep "[lL]ove" zzbds.txt love Love [root@pakho ~]# grep "[ilL]ove" zzbds.txt love Love iove七、[-]匹配指定范围内的一个字符,连续的范围 [root@pakho ~]# grep "[0-9]" zzbds.txt k8s 1ove [root@pakho ~]# grep "[a-z]ove" zzbds.txt love iove [root@pakho ~]# grep "[a-Z]ove" zzbds.txt love Love iove八、[^] 匹配不在指定组内的字符 为什么会有数字的也被显示出来因为搜索命中了其他字符附带将数字带了出来 [root@pakho ~]# grep "[^0-9]" zzbds.txt zabbix abc kali centos linux ubuntu python docker k8s javascript shell adc abcd abcde abcdef love Love 1ove iove [root@pakho ~]# grep "[^a-z]ove" zzbds.txt Love 1ove九、\ 用来转义元字符 (") ("") (\ ),脱意符 一般情况下都用 " " 尽量不去使用 " 和 \\ 只转意一个字符 转义右边的字符 [root@pakho ~]# grep "\.ove" zzbds.txt .ove十、\2}2{3}\. #两个五 三个二最后一个点
^[ \t]*$ #0到多个空格或tab的行
^# #以#开头的注释行
^[ \t]*# #0到多个空格或者tab开头的注释行
:1,$ s/\([Oo]ccur\)ence/\1rence/
三剑客grep详解
grep搜索指定的输入文件(如果没有指定文件,或者如果文件名中有一个连字符减号(-),则搜索标准输入)中的行包含与给定模式匹配的。默认情况下,grep打印匹配行。此外,还提供了两个变体程序egrep和fgrep。egrep与grep-E相同。fgrep与grep-F相同。直接调用因为不推荐使用egrep或fgrep,但提供它是为了允许依赖它们的历史应用程序不经修改地运行。
grep的分类
grepegrepfgrep
grep的返回值
0 :表示成功1 :表示所提供的文件无法找到匹配的pattern2 :表示查找地点不对 |
CopyRight 2018-2019 实验室设备网 版权所有 |