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

 

 

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

 

目录

通配符

正则表达式

 

 

 通配符

 

 

正则表达式与通配符

 

1
2
3
正则表达式用来在文件中<strong>匹配符合条件的字符串</strong>,正则是<strong>包含匹配</strong>。grep、awk、sed等命令可以支持正则表达式。
 
通配符用来<strong>匹配符合条件的文件名</strong>,通配符是<strong>完全匹配</strong>。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来就行匹配。

  

 

通配符

1
2
3
4
5
6
7
8
符号  作用
*   匹配任何字符串/文本,包括空字符串;*代表任意字符(0个或多个) ls file *
?   匹配任何一个字符(不在括号内时)?代表人意1个字符 ls file 0
[abcd]  匹配abcd中任何一个字符
[a-z]   表示范围a到z,表示范围的意思 []匹配中括号中任意一个字符 ls file 0
{..}    表示生成序列。以逗号分隔,且不能有空格
补充  
[!abcd] 或[^abcd]表示非,表示不匹配括号里面的任何一个字符

  

 

通配符的使用

 

? 匹配任何一个字符

1
2
3
ls /bin/???
 
ls /bin/??

 

 [abcd] 表示匹配中括号内任意一个字符就成

1
ls te[asb]t

 

 {}生成序列

1
touch {a..c}

 

匹配文件

1
ls [a-c]

 

利用{}备份数据库 

1
2
3
4
5
表示将ae复制一份叫做affff
cp a{e,fff}
 
表示将ae做备份叫做ae.bak
cp a{e,e.bak}

  

 

 

!^表示非,取反

1
2
3
查找文件名里没有a和e的文件名<br>ls [!ae]
 
ls [^ae]

  

 

 

 

正则表达式

 

 

正则表达式

 

 

 

正则表达式的使用

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<strong>"*" 前一个字符匹配0次,或者任意多次</strong>
 
匹配至少包含有一个a的行
grep "aa*" test.txt
 
匹配至少包含有两个a的行
grep "aaa*"
 
 
<strong>"."匹配除了换行符以外任意一个字符</strong>
 
匹配所有内容
grep ".*" test.txt
 
匹配在s与d之间一定有两个字符的单词
grep "s..d" test.txt
 
匹配在s与d之间有任意字符
grep "s.*d" test.txt
 
 
<strong>"^"匹配行首,"$"匹配行尾</strong>
 
匹配空白行
grep "^$" test.txt
 
匹配以大写字母M开头的行
grep "^M" test.txt
 
匹配以小写字母m结尾的行
grep "m$" test.txt
 
 
 
<strong>"[]'匹配中括号中指定的任意一个字符,只匹配一个字符</strong>
匹配s和i字母中,要不是a、要不是b
grep "s[ao]id" test.txt
 
匹配任意一个数字
grep "[0-9]" test.txt
 
匹配用小写字母开头的行
grep "^[a-z]" test.txt
 
 
 
<strong>"[^]"匹配除中括号的字符以外的任意一个字符</strong>
匹配不用小写字母开头的行
grep "[^a-z]" test.txt
 
匹配不用字母开头的行
grep "^[^a-zA-Z]" test.txt
 
<strong>
"\" 转义符</strong>
匹配以点结尾的行
grep "\.$" test.txt
 
 
<strong>"\{n\}" 表示其前面的字符恰好出现n次</strong>
 
匹配a字母连续出现三次的字符串
grep "a\{3\}" test.txt
 
匹配包含连续的三个数字的字符串
grep "[0-9]\{3\}" test.txt
 
 
<strong>"\{n,\}" 表示其前面的字符出现不小于n次</strong>
 
匹配最少用连续三个数字开头的行
grep "^[0-9]\{3,\}[a-z]" test.txt
 
 
 
<strong>"\{n,m\}'匹配其前面的字符至少出现n次,最多出现m次</strong>
 
匹配在字母s和字母i之间有最少一个a,最多三个a
grep "sa\{1,3\}i" test.txt

  

posted @   -零  阅读(380)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示