首页 > 系统相关 >Shell第四章《正则表达式》

Shell第四章《正则表达式》

时间:2022-09-04 15:57:30浏览次数:62  
标签:字符 Shell grep 正则表达式 第四章 love txt root localhost

一、前言

1.1、名词解释

正则表达式(regular expression, RE)是一种字符模式,用于在查找过程中匹配指定的字符。
在大多数程序里,正则表达式都被置于两个正斜杠之间;例如/l[oO]ve/就是由正斜杠界定的正则表达式
它将匹配被查找的行中任何位置出现的相同模式。在正则表达式中,元字符是最重要的概念。

1.2、工具

被vim、sed、awk、grep调用

1.3、场景

mysql、oracle、php、python ,Apache,Nginx...  需要正则

1.4、回顾

示例
    需求
匹配数字的脚本:用户输入创建账号的数量
语法
	[[ ^[0-9]+$ ]]
示范
	read -p "输入数字才退出:  " num

while :
do

if [[ ! $num =~ ^[0-9]+$ ]];then
        echo "error enter!"
        read -p "输入数字才退出:" num
else
        echo "thank you"
        exit 1
fi
done

二、元字符 

定义:元字符是这样一类字符,它们表达的是不同于字面本身的含义

2.1、基本正则表达式元字符

^   行首定位符

[root@localhost ~]# grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

[root@localhost ~]# grep "^root" /etc/passwd
为什么什么少一行?
root:x:0:0:root:/root:/bin/bash

$   行尾定位符

love$

.   匹配任意单个字符

[root@localhost ~]# grep abc 1.txt
abc
[root@localhost ~]# grep adc 1.txt
adc
[root@localhost ~]# grep a.c 1.txt
abc
adc

*   匹配前导符0到多次

[root@localhost ~]# cat 1.txt 
a
ab
abc
abcd
abcde
abcdef
ggg
hhh
iii
[root@localhost ~]# grep "abc*" 1.txt 
ab
abc
abcd
abcde
abcdef
[root@localhost ~]# grep "abcd*" 1.txt 
abc
abcd
abcde
abcdef

.*   任意多个字符

[root@localhost ~]# grep ".*" 1.txt 
a
ab
abc
abcd
abcde
abcdef
ggg
hhh
iii

[ ]   匹配指定范围内的一个字符

[lL]ove
[root@localhost ~]# cat 1.txt 
love
Love
1ove
iove
[root@localhost ~]# grep [lL]ove 1.txt 
love
Love

[ - ]   匹配指定范围内的一个字符,连续的范围

[a-z0-9]ove         //////[a-Z]=[a-zA-Z]
	[root@localhost ~]# cat 1.txt 
love
Love
1ove
iove
[root@localhost ~]# grep [0-9] 1.txt 
1ove
[root@localhost ~]# grep [a-z]ove 1.txt 
love
iove
[root@localhost ~]# grep [a-Z]ove 1.txt 
love
Love
iove

[^]   匹配不在指定组内的字符

[^a-z0-9]ove          //////取反
	[root@localhost ~]# cat 1.txt 
love
Love
1ove
iove
[root@localhost ~]# grep "[^a-z]ove" 1.txt 
Love
1ove
[root@localhost ~]# grep "[^0-9]ove" 1.txt 
love
Love
iove

\   用来转义元字符    (''   ""    \),脱意符

[root@localhost ~]# grep "l." 1.txt 
love
l.ve
[root@localhost ~]# grep "l\." 1.txt 
l.ve

\<   词首定位符

[root@localhost ~]# grep "love" 1.txt 
love
iloveyou
[root@localhost ~]# grep "\<love" 1.txt 
love

^  和  \<的区别

[root@localhost ~]# cat 1.txt 
i loveyou
loveyou
[root@localhost ~]# grep "\<love" 1.txt 
i loveyou
loveyou
[root@localhost ~]# grep "^love" 1.txt 
loveyou

\>   词尾定位符

love\>

()   \(..\)   匹配稍后使用的字符的标签

:3,9 s/\(.*\)/#\1/	加注释

x\{m\}   字符x重复出现m次 

[root@localhost ~]# grep o 1.txt
love
loove
looove
[root@localhost ~]# grep "o\{3\}" 1.txt
looove

x\{m,\}   字符x重复出现m次以上

 o\{5,\}

x\{m,n\}   字符x重复出现m到n次

o\{5,10\}
	[root@localhost ~]# egrep "o{4,5}" 1.txt 
oooo
ooooo
ioooo
ooooi
iooooi
[root@localhost ~]# egrep "o{5,5}" 1.txt 
ooooo

2.2、扩展正则表达式元字符

+   匹配1~n个前导字符

[root@localhost ~]# cat 1.txt
lve
love
loove
[root@localhost ~]# egrep lo+ve 1.txt
love
loove

?   匹配0~1个前导字符

[root@localhost ~]# egrep lo?ve tom.sh 
love
lve

a|b   匹配a或b

[root@localhost ~]# egrep "o|v" 1.txt 
lve
1ove
loove
looove
loeve
love
Love
iloveyou
l.ve
o
oo
ooo
oooo
ooooo
ioooo
ooooi
iooooi

()   组字符

[root@localhost ~]# egrep "loveable|rs" 1.txt 
rs
loveable
lovers
[root@localhost ~]# egrep "love(able|rs)" 1.txt 
loveable
lovers

标签:字符,Shell,grep,正则表达式,第四章,love,txt,root,localhost
From: https://www.cnblogs.com/Jqazc/p/16655234.html

相关文章

  • 第四章-高级组件
    使用模板化组件组件是Blazor的重用构建块。在C#中,泛型被大量用于重用;想想你在泛型中使用的所有集合,比如List<T>。如果Blazor有类似通用组件的东西会不会很酷?是......
  • Windows11中windowsPowerShell运行hexo命令报错
    修改设置Windows11安装后,系统自带的终端输入命令,git和node都可以使用,hexo不可以,提示:hexo:无法加载文件C:\Users\username\AppData\Roaming\npm\hexo.ps1`,因为在此系......
  • shell脚本替换jar包中的fastjson版本
    fastjson版本总是出现漏洞,已经使用了较低fastjson版本,需要更新高版本fastjson,由于java应用比较多,逐个打包重新发布版本是不可能的,需要把jar包中的低版本fastjson替换成高版......
  • 正则表达式
     1、正则表达式构造摘要(1)字符类[abc]:a、b或c(简单类)[^abc]:任何字符,除了a、b或c(否定)[a-zA-Z]:a到z或A到Z,两头的字母包括在内(范围)(2)预定义字符类.:任何字符(与......
  • shell: list_executable_file - 列出可执行文件的名称(linux)
    shell:list_executable_file-列出可执行文件的名称(linux)    一、shell:list_executable_file 1#!/usr/bin/bash234#file_name=list_executabl......
  • but GITEE.COM does not provide shell access
    butGITEE.COMdoesnotprovideshellaccess当使用ssh加公钥认证时在终端输入[email protected]首次使用需要确认并添加主机到本机SSH可信列表。若返回HiXXX!You......
  • 10_Linux基础-SHELL入门1
    @目录10_Linux基础-SHELL入门1一.输入输出重定向二.2个特殊文件三.heredocument四.tee命令五.清空文件内容六.SHELL入门SHELL的变量SHELL接收参数数据类型引号区别......
  • php exec 函数执行shell命令,中文参数异常的问题
    exec("/usr/local/bin/wkhtmltopdf--page-sizeA4--footer-font-nameFangSong--footer-line--header-font-size13--footer-font-size9--footer-center[page]--......
  • Shell 传递参数
    可执行文件loan_repay_check.sh其中有三个参数s_date,e_date,project_key如下:传入参数执行:shloan_repay_check.sh2022-03-022022-03-02lx8......
  • 04_Linux基础-.&..-cat-tac-重定向-EOF-Shell-more-ps-less-head-tail-sed-grep-which
    04_Linux基础-.&..-cat-tac->&>>-EOF-Shell-more-ps-less-head-tail-sed-grep-which-whereis-PATH-bash-/usr-locate-find一.回顾回顾// 将/home/目录下的所有文件和......