[Shell]正则表达式与通配符

-------------------------------------------------------------------------------------

正则表达式与通配符:

1. 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式。

2. 通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配。

基础正则表达式:

*      前一个字符匹配0次或任意多次

.      匹配除了换行符外任意一个字符

^      匹配行首。^abc 即 匹配以abc开头的行

$      匹配行尾。abc$ 即 匹配以abc结尾的行

[]      匹配中括号中指定的任意一个字符,只匹配一个字符。[aeiou]匹配任意一个元音字母,[0-9][a-z]匹配小写字母和一位数字构成的两位字符

[^]     匹配除中括号内的字符以外的任意一个字符

\       转义符。用于将特殊符号的含义取消

\{n\}    匹配其前面的字符恰好出现n次。[0-9]\{2\} 匹4位数字

\{n,\}    匹配其前面的字符出现不小于n次。

\{n,m\}    匹配其前面的字符至少出现n次,最多出现m次。[a-z]\{6,8\} 匹配6到8位的小写字母

注意:

* 在通配符中表示任意字符,在正则表达式中表示前一个字符匹配0次或任意多次。

grep "a*" exp.txt    # 匹配所有内容,包括换行符(就是因为可以匹配0次)

grep "aa*" exp.txt    # 匹配至少含有一个a的行

grep "aaa*" exp.txt    # 匹配至少包含两个连续a的字符串

grep "a..e" exp.txt    # 匹配在a和e之间有两个字符的词

grep "s.*e" exp.txt    # 匹配在a和e之间有任意字符的词

grep ".*" exp.txt    # 匹配所有内容

grep "^M" exp.txt    # 匹配以M开头的行

grep "n$" exp.txt    # 匹配以n结尾的行

grep "^$" exp.txt -n    # 匹配所有空白行,-n可以显示行号

grep "^[a-z]" exp.txt    # 匹配小写字母开头的行

grep "a[bc]e" exp.txt    # 匹配abe 或 ace

grep "^[^a-z]" exp.txt    # 匹配不以小写字母开头的行

grep "[^a-zA-Z]" exp.txt    # 匹配除了字母之外的其它字符的行

grep "\.$" exp.txt    # 匹配以.结尾的行

grep "a\{2\}" exp.txt    # 匹配a连续出现两次的行

grep "[0-9]\{2,\}" exp.txt    # 匹配连续出现两个数字的行

grep "ab\{1,3\}" exp.txt    # 匹配a后有1-3个b的行

Link:http://www.cnblogs.com/farwish/p/4804012.html

@黑眼诗人 <www.farwish.com>

时间: 2024-10-24 10:32:22

[Shell]正则表达式与通配符的相关文章

Shell学习之结合正则表达式与通配符的使用(五)

Shell学习之结合正则表达式与通配符的使用 目录 通配符 正则表达式与通配符 通配符 通配符的使用 正则表达式 正则表达式 正则表达式的使用 通配符 正则表达式与通配符 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式. 通配符用来匹配符合条件的文件名,通配符是完全匹配.ls.find.cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来就行匹配. 通配符 符号 作用 * 匹配任何字符串/文本,包括空字符串:*代表任意字

问题:关于正则表达式和通配符的问题,求解答

遇到一个关于通配符的问题.在shell下使用通配符匹配时,只有tmp被匹配出来了,其他文件名都要用正则,实在不知道为啥,谁知道,求解? 问题:关于正则表达式和通配符的问题,求解答

正则表达式和通配符简介

通配符和正则表达式 1.通配符(wild-card pattern)一般是用于匹配文件名,它是由shell解析的,一般用于find(文件搜索).ls(目录).cp(复制).mv(移动)等. shell常见的通配符有 * 0或多个字符 ? 匹配任意一个字符 ~ 当前用户家目录 ~+当前工作目录 ~-前一个工作目录 [list]匹配list中的任意一个单一字符 [^list]匹配除list中的任意单一字符[0-9]或[:digit:]数字0-9匹配 [a-z]或[:lower:]小写字母a-z匹配

shell 正则表达式与文件名匹配

1) . : 匹配任意单ASCII 字符,可以为字母,或为数字.2) 举例: ..XC..匹配deXC1t.23XCdf等,.w..w..w.匹配rwxrw-rw-行首以^匹配字符串或字符序列1) ^ : 允许在一行的开始匹配字符或单词.2) 举例: ^.01 匹配0011cx4.c01sdf 等,^d 匹配drwxr-xr-x.drw-r--r--等 行尾以$匹配字符串或字符 1) $ : 在行尾匹配字符串或字符,$符号放在匹配单词后.2) 举例: trouble$ 匹配以单词trouble结

shell的一些通配符

shell中存在一些通配符,为了要我们实现一些模糊匹配使用,主要分为以下几类: (1)*:0个或多个连续的字符 (2)?:任何单个字符 (3)[abc]:出现在abc中的任何单个字符 (4)[^abc]:任何在abc中未出现的单个字符 (5)[!abc]:和(4)相同 (6){a,b,c}:可以扩展成多个参数,首先扩展为a.再次为b,最后为c shell的一些通配符

”*“在正则表达式和通配符的应用

1. sed -n '/^12:3*/,/^13:3*/p'  a.log这个截取的时间段是12:00到13:00(刚开始我以为这个截取的时间段是12点30到13点30的,因为我把*当成通配符了,q其实在sed 和awk中它是正则表达式)2.sed -n '/^12:30*/,/^13:30*/p ' a.log这个截取的时间段是12:30到13:30 比如像awk,sed,等,是针对文件的内容的.都是用正则表达式 而通配符多用在文件名上,比如查找find,ls,cp,等等 *在通配符和正则表达

第七章 Shell正则表达式

正则表达式在每种语言中都会有,目的就是匹配符合你预期要求的字符串. 7.1 Shell正则表达式 基础正则表达式:BRE(basic regular express) 扩展正则表达式:ERE(extend regular express),扩展的表达式有+.?.|和() 符号 描述 示例 . 匹配除换行符(\n)之外的任意单个字符 匹配123: echo -e "123\n456" |grep -E '1.3' ^ 匹配字符串开头 匹配以abc开头的行: echo -e "a

Linux shell 正则表达式用法

1.“ \  ” 用法 用于关闭其后续字符的特殊含义,恢复字符的本身含义,如:\\ 表示字符 \ 2. “ . " 用法 匹配任意单个字符 3. " * " 用法 匹配任意字符,可以是单个,也可以是多个,和 ”.“ 字符的去吧是是否可以匹配多个任意字符 4. "^" 的用法 在行的起始处开始匹配紧接着的字符,如 ^6,匹配行的首字符为6的行. 5." $ " 的用法 和 “^” 用法相似,表示在行的结尾处开始匹配字符,如 6$,匹配行的

第十五章 shell正则表达式

第十五章 shell正则表达式 见图片 Shell正则表达式 正则表达式的分类 基本的正则表达式(Basic Regular Expression 又叫Basic RegEx 简称BREs) 扩展的正则表达式(Extended Regular Expression 又叫Extended RegEx 简称EREs) Perl的正则表达式(Perl Regular Expression 又叫Perl RegEx 简称PREs) 基本组成部分 正则表达式的基本组成部分. 正则表达式 描述 示例 Bas