当前位置:网站首页>正则表达式的实际使用

正则表达式的实际使用

2022-08-09 22:10:00 勾栏听曲_0

目录

find命令

语法

参数说明

find中正则表达式的运用

grep命令

语法:

参数说明

grep中正则表达式的运用

实际使用案例


find命令

语法

    find是在一个文件系统中查找指定的文件或者目录,find命令的语法是

find [path ] [options]

path :指定要搜索的路径,如果省略则在当前路径下查找

参数说明

参数含义

mount, -xdev 

只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件

-amin n 

在过去 n 分钟内被读取过

-anewer file 

比文件 file 更晚被读取过的文件
-atime n在过去 n 天内被读取过的文件
-cmin n 在过去 n 分钟内被修改过
-cnewer file 比文件 file 更新的文件
-ctime n 在过去 n 天内创建的文件
-mtime n 在过去 n 天内修改过的文件
-empty 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name

-ipath p, -path p 

路径名称符合 p 的文件,ipath 会忽略大小写

-name name, -iname name 

文件名称符合 name 的文件。iname 会忽略大小写

-size n 

文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
type c文件类型是 c 的文件。

find中正则表达式的运用

#将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
find . -name "*.c"

#将当前目录及其子目录中的所有文件列出:
find . -type f

#将当前目录及其子目录下所有最近 20 天内更新过的文件列出:
find . -ctime  20

#查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:
find /var/log -type f -mtime +7 -ok rm {} \;

#查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
find . -type f -perm 644 -exec ls -l {} \;

#查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:
find / -type f -size 0 -exec ls -l {} \;

grep命令

grep(egrep)用来在一个文本文件(字符串)查找一个特定的字符串的。egrep 是用扩展的正则表达式去查找

语法:

 grep options [正则表达式] files

在files列举的所有文件里面,查找以正则表达式所描述的字符串

参数说明

                    -n  显示查找到的字符串所在的行号
                    -E 用扩展的正则表达式
                    grep -E ==>egrep
                    
                    -i ignore 在字符串查找时忽略大小写
                        -i "main"
                            [mM][aA][iI][nN]

                    -# 表示同时显示匹配的上下#行
                    -c count 打印每个文件匹配行的个数
                    -H 显示文件名
                    -h 不显示文件名

grep中正则表达式的运用

grep test *file     #在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行

grep -r update /etc/acpi     #查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容

grep -v test *test*    #反向查找,查找文件名中包含 test 的文件中不包含test 的行

实际使用案例

[a-z]             // 匹配所有的小写字母 
[A-Z]             // 匹配所有的大写字母 
[a-zA-Z]          // 匹配所有的字母 
[0-9]             // 匹配所有的数字 
[0-9\.\-]         // 匹配所有的数字,句号和减号 
[ \f\r\t\n]       // 匹配所有的白字符
[^a-z]            //除了小写字母以外的所有字符 
[^\\\/\^]         //除了(\)(/)(^)之外的所有字符 
[^\"\']                 //除了双引号(")和单引号(')之外的所有字符
^[a-zA-Z0-9_]{1,}$      // 所有包含一个以上的字母、数字或下划线的字符串 
^[1-9][0-9]{0,}$        // 所有的正整数 
^\-{0,1}[0-9]{1,}$      // 所有的整数 
^[-]?[0-9]+\.?[0-9]+$   // 所有的浮点数

 正则表达式 描述
 /\b([a-z]+) \1\b/gi 一个单词连续出现的位置。
 /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/ 匹配一个 URL 解析为协议、域、端口及相对路径。
 /^(?:Chapter|Section) [1-9][0-9]{0,1}$/ 定位章节的位置。
 /[-a-z]/ a 至 z 共 26个 字母再加一个 ​-​ 号。
 /ter\b/ 可匹配 chapter,而不能匹配 terminal。
 /\Bapt/ 可匹配 chapter,而不能匹配 aptitude。
 /Windows(?=95 |98 |NT )/ 可匹配 Windows95 或 Windows98 或 WindowsNT,当找到一个匹配后,从 Windows 后面开始进行下一次的检索匹配。
 /^\s*$/ 匹配空行。
 /\d{2}-\d{5}/ 验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。
 <[a-zA-Z]+.*?>([\s\S]*?) 匹配 HTML 标记。

 正则表达式 描述
 hello 匹配 {hello}
 gray|grey 匹配 {gray, grey}
 gr(a|e)y 匹配 {gray, grey}
 gr[ae]y 匹配 {gray, grey}
 b[aeiou]bble 匹配 {babble, bebble, bibble, bobble, bubble}
 [b-chm-pP]at|ot 匹配 {bat, cat, hat, mat, nat, oat, pat, Pat, ot}
 colou?r 匹配 {color, colour}
 rege(x(es)?|xps?) 匹配 {regex, regexes, regexp, regexps}
 go*gle 匹配 {ggle, gogle, google, gooogle, goooogle, ...}
 go+gle 匹配 {gogle, google, gooogle, goooogle, ...}
 g(oog)+le 匹配 {google, googoogle, googoogoogle, googoogoogoogle, ...}
 z{3} 匹配 {zzz}
 z{3,6} 匹配 {zzz, zzzz, zzzzz, zzzzzz}
 z{3,} 匹配 {zzz, zzzz, zzzzz, ...}
 [Bb]rainf\*\*k 匹配 {Brainf**k, brainf**k}
 \d 匹配 {0,1,2,3,4,5,6,7,8,9}
 1\d{10} 匹配 11 个数字,以 1 开头
 [2-9]|[12]\d|3[0-6] 匹配 2 到 36 范围内的整数
 Hello\nworld 匹配 Hello 后跟换行符,后跟 world
 \d+(\.\d\d)? 包含一个正整数或包含两位小数位的浮点数。
 [^*@#] 排除 *、@ 、# 三个特色符号
 //[^\r\n]*[\r\n] 匹配 // 开头的注释
 ^dog 匹配以 "dog" 开始
 dog$ 匹配以 "dog" 结尾
 ^dog$ is exactly "dog"
原网站

版权声明
本文为[勾栏听曲_0]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_53050357/article/details/126235104