Linux正则表达式与通配符

Linux正则表达式与通配符,第1张

正则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。

只有掌握了正则表达式,才能全面地掌握 Linux 下的常用文本工具(例如:grep、egrep、GUN sed、 Awk 等) 的用法

grep、sed、awk天然支持正则

grep -v代表反选,反向选择匹配到的内容

grep -E代表使用扩展正则

grep -P代表使用Perl正则

sed -r 代表使用扩展正则

正则表达式分为三类(man grep可以看到,分别是basic RegExs,extended RegExs,perl RegExs)

1、基本的正则表达式(Basic Regular Expression 又叫 Basic RegEx 简称 BREs)

2、扩展的正则表达式(Extended Regular Expression 又叫 Extended RegEx 简称 EREs)

3、Perl 的正则表达式(Perl Regular Expression 又叫 Perl RegEx 简称 PREs)

b. 处理过程:查找文本文件中是否包含要查找的 “关键字”(关键字可以是正则表达式) ,默认返回匹配的该行的内容

c. grep|egrep处理文件时,按行处理 |

| sed | sed | sed -r | - | a. 处理对象:文本文件

b.处理 *** 作:对文本文件的内容进行 查找、替换、删除、增加等 *** 作

c. sed 在处理文本文件的时候,按行处理 |

| awk | - | awk | - | a. awk 处理的对象:文本文件

b. awk 处理 *** 作:主要是对列进行 *** 作 |

注意:egrep 或 sed -r 默认使用扩展正则表达式(EREs),一般特殊字符({})可以不转义

grep -E 以及egrep(Extend Regular Expression)

Linux通配符和三剑客的正则表达式是不一样的,因此,代表的意义也有较大的区别

通配符一般用户命令行bash环境,而linux正则表达式用于grep, sed, awk场景。

通配符说明

示例:* 的使用:代表任意0-N个字符,代表所有字符

文件通配符* 匹配零个或多个字符 ? 匹配任何单个字符 ~ 当前用户家目录 ~mage 用户mage家目录 ~+ 当前工作目录 ~- 前一个工作目录 [0-9] 匹配数字范围 [a-z]:字母(或的关系)就是表示中括号中的某一个字符 [A-Z]:字母 [a-c]:a A b B c [A-C]:A b B c C,也就是[]在里面匹配字母时是以aAbB...这样排序的 [wang] 匹配列表中的任何的一个字符 [^wang] 匹配列表中的所有字符以外的字符 {}花括号用来匹配一组用逗号分隔的字符串中的任一个。 左花括号之前的所有字符称为前文(preamble),右花括号之后的所有字符称为后文(preamble)。 前文和后文都是可选的。花括号中不能包含不加引号的空白符预定义的字符类:man 7 glob(通配符) [:digit:]:任意数字,相当于0-9 [:lower:]:任意小写字母[:lower:] 这个只相当于a-z,表示的时候必须要在加上中括号 [:upper:]: 任意大写字母 [:alpha:]: 任意大小写字母 [:alnum:]:任意数字或字母 [:blank:]:水平空白字符 [:space:]:水平或垂直空白字符 [:punct:]:标点符号 [:print:]:可打印字符 [:cntrl:]:控制(非打印)字符 [:graph:]:图形字符 [:xdigit:]:十六进制字符ls命令的功能: 列出当前目录的内容或指定目录ls命令的用法:ls [options] [files_or_dirs]         示例:                 ls -a 包含隐藏文件                 ls -l 显示额外的信息                 ls -r 倒转排序或者可以说是逆序排列                 ls -R 目录递归通过(递归会进入到子目录)                 ls -ld 目录和符号链接信息                 ls -1  文件分行显示(列显示)                 ls –S  按从大到小排序(按文件的大小排序)                 ls –t  按mtime排序(按文件的修改时间排序)                 ls –u 配合-t选项,显示并按atime从新到旧排序                 ls –U  按目录存放顺序显示(以创建文件的次序进行显示)                 ls –X  按文件后缀排序                 ls -d  列出目录本身并不显示内容                 ls -h  单位换算                 ls -I  --ignore(忽略)=PATTERN(模式)按着规定的模式去隐藏不进行显示 实例: 1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数 字的文件或目录 ls -d /var/l*[0-9]*[[:lower:]] 2、显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录 ls -d /etc/[0-9]*[^0-9] 3、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符 的文件或目录 ls -d /etc/[^[:alpha:]][[:alpha:]]* 4、显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符 的文件或目录 ls -d /etc/rc[0-6]* 5、显示/etc目录下,所有以.d结尾的文件或目录 ls -d /etc/*.d 6、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录 ls -d /etc/[mnrp]*.conf 7、只显示/root下的隐藏文件和目录 ls -d /root/.* ls -aI "[^.]*"  当前目录为/root l. ls -d .* --color=auto 当前目录为/root 8、只显示/etc下的非隐藏目录 ls -d /etc/*/

Linux的基本命令格式:

命令 [-选项] [参数]

例如

     ls -a /etc      ls - l  /etc

makdir -p /abc/cba

linux常用通配符有* ,?,[ ],[^],[:space:],[:punct:],[:lower:],[:upper:],[:digit:],[:alnum:]等等。

*  匹配任意长度的任意字符

?匹配任意单个字符

[ ]匹配制定范围内的单个字符[^]匹配制定范围外的单个字符

[:space:]匹配单个空白字符

[:punct:]匹配单个标点符号字符

[:lower:]匹配单个小写字母字符

[:upper:]匹配单个大写字母字符

[:digit:]匹配单个数字字符

[:alnum:]匹配单个数字和字母字符

以上通配符在使用时还需再加一个[ ]

更多详细Linux知识可参考《Linux就该这么学》。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/6040287.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-12
下一篇 2023-03-12

发表评论

登录后才能评论

评论列表(0条)

保存