正则表达式使用说明(包含find命令与grep命令)

简介: 正则表达式使用说明(包含find命令与grep命令)

目录


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"
相关文章
|
6月前
|
机器学习/深度学习 Shell 开发工具
正则表达式 与文本三剑客(sed grep awk)
正则表达式 与文本三剑客(sed grep awk)
|
6月前
|
运维 Unix Linux
grep正则表达式搜索
grep正则表达式搜索
52 3
|
6月前
|
存储 算法 Shell
【Shell 命令集合 文档编辑】Linux 正则表达式匹配 egrep命令使用教程
【Shell 命令集合 文档编辑】Linux 正则表达式匹配 egrep命令使用教程
81 0
|
Unix Linux
如何在 Linux 中使用 Grep 和正则表达式进行文本搜索?
如何在 Linux 中使用 Grep 和正则表达式进行文本搜索?
329 5
|
Linux Perl
[笔记]linux grep之正则表达式
[笔记]linux grep之正则表达式
|
JavaScript 搜索推荐 Linux
【vim && neovim】从入门到放弃(“四种”模式、常用命令、正则表达式、文件属性、插件安装--代码补全、一键格式化、显示目录)(二)
本文所有操作均通过ssh连接腾讯云服务器完成。如果你正在使用安装GNOME桌面的Linux,很多操作可以通过鼠标完成,或许更加直观。 推荐使用neovim(结合鼠标操作更加丝滑)。
【vim && neovim】从入门到放弃(“四种”模式、常用命令、正则表达式、文件属性、插件安装--代码补全、一键格式化、显示目录)(二)
|
机器学习/深度学习 NoSQL Linux
Linux行处理工具: grep 正则表达式
Linux行处理工具: grep 正则表达式
113 0
|
JavaScript Java Linux
【vim && neovim】从入门到放弃(“四种”模式、常用命令、正则表达式、文件属性、插件安装--代码补全、一键格式化、显示目录)(三)
本文所有操作均通过ssh连接腾讯云服务器完成。如果你正在使用安装GNOME桌面的Linux,很多操作可以通过鼠标完成,或许更加直观。 推荐使用neovim(结合鼠标操作更加丝滑)。
|
数据可视化 搜索推荐 Unix
【vim && neovim】从入门到放弃(“四种”模式、常用命令、正则表达式、文件属性、插件安装--代码补全、一键格式化、显示目录)(一)
本文所有操作均通过ssh连接腾讯云服务器完成。如果你正在使用安装GNOME桌面的Linux,很多操作可以通过鼠标完成,或许更加直观。 推荐使用neovim(结合鼠标操作更加丝滑)。
|
机器学习/深度学习 C语言 数据安全/隐私保护
『正则表达式』概念 及在grep、awk、sed、C语言、Python中的简单应用
正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式。它可以用来检查一个字符串是否符合某个规则,或者从一个字符串中提取出符合某个规则的子串。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。