正则表达式/通配符/快捷键
目 录
第1章 正则表达式 1
1.1 什么是正则表达式 1
1.2 为何使用正则表达式 1
1.3 正则表达式的分类 1
1.4 如何区分通配符和正则表达式 1
第2章 通配符 1
第3章 正则表达式 4
第4章 快捷键 5
第5章 第三关考试题 6
第1章 正则表达式
1.1 什么是正则表达式
(1)正则表达式就是为了处理大量的字符串而定义的一套规则和方法。
(2)通过定义的这些特殊符号的辅助,系统管理员就可以快速过滤,替换出需要的字符串
(3)正则表达式一般以行为单位处理
1.2 为何使用正则表达式
linux运维工作大量过滤日志工作。化繁为简。简单易用高效。
三剑客都支持。
1.3 正则表达式的分类
(1) 基本正则表达式 BRE
(2) 扩展正则表达式 ERE
(3) 注*BRE只承认的元字符有^ $ . [ ] *其他字符识别为普通字符;
ERE则添加了( ) { } ? + | 等。
只有在用反斜杠“\”进行转译的情况下,字符(){}才会在BRE被当作元字符处理,而ERE中,任何元符号前面加上反斜杠反而会使其当做普通字符来处理。
1.4 如何区分通配符和正则表达式
(1)通配符应用非常广泛,存在于各种语言中,php、perl、python、三剑客都支持。而最常用正则表达式的命令是grep(egrep)、sed、awk一般只有他们三个能用。
(2)表达式是文件目录就是通配符,表达式是文件内容(字符串)正则表达式。
(3)通配符和正则表达式都有* ?[ ],但是通配符的这些符号都能自身代表任意字符,而正则表达式的这些符号只能代表这些符号前面的字#
第2章 通配符
* |
代表任意(0个或多个)字符。 |
ls file* |
? |
代表任意1个字符 |
ls file0? |
[abc] |
匹配中括号中任何一个字符 |
ls file0[678] lsfile0[6-9] |
[a-z] |
表示范围a-z,-表示范围的意思,[]匹配中括号中任意一个字符 |
lsfile0[6-9] |
{,,,} |
中间为命令区块组合或者内容序列 |
{0,9} {0..9} |
[!abcd] |
表示非abcd或者[^abcd],不匹配括号里任意一个字符 |
ls file0[^678] |
~ |
当前目录的家目录 |
|
— |
用户上次所在目录 |
cd - ,由变量OLDPWD控制 su- 切换用户的系统环境 env|grep -I oldpwd OLDPWD=/root |
. |
当前目录 |
三种写法:1.ls 2.ls. 3.ls./ |
.. |
当前目录的上一级目录 |
cd.. |
> |
输出重定向,会清空原文件内容,然后在原文件追加新内容 |
echo |
>> |
追加输出重定向,追加到文件最后一行 |
echo |
< |
输入重定向 tr xargs |
xargs -n 1 <oldboy.txt |
<< |
cat用来给文件追加多行文本内容 |
cat >>/data/oldboy.txt<<EOF neirong EOF |
# |
超级用户的提示符;linux会忽视它,给人看的,解释说明 |
|
$ |
引用变量,取变量的值;$取列;$数字普通用户的命令提示符 |
"$OLDPWD" awk中取列awk '{print $3,$6}' oldboy.txt |
' |
单引号,不具有变量置换功能,输出时所见及所得 |
|
“” |
双引号,具备变量置换功能,解析变量输出 |
[root@root data]# echo "$OLDPWD" |
`` |
反引号,引用命令的结果,等价于$() |
ls -l `which cat` |
; |
分隔多个命令,没有逻辑关系,只是一步步执行 |
cd /;mkdir test |
\ |
转义符,屏蔽别名 |
|
/ |
根或者路径分隔符 |
|
! |
1.表示非 find2.vi强制退出 3.!+字母 调出最近以此字母开头的命令 4.!!使用最近一次操作的命令5.!+数字 调出历史的几条命令 |
|
&& |
并且 |
awk中NR9>&&<31 |
|| |
前一个命令执行失败后再执行后一个命令 |
tou ett.txt||touch test.txt |
| |
管道,将前一个命令的结果交给后一命令继续处理 xargs |
cat test.txt|xargs -n 3 |
第3章 正则表达式
正则 |
作用 |
举例 |
^ |
以什么开头 |
[root@Bison data]# grep "^m" oldboy.txt my blog is http://oldboy.blog.51cto.com my qq num is 49000448. my god ,i am not oldbey,but OLDBOY! |
$ |
以什么结尾 |
[root@Bison data]# grep "m$" oldboy.txt |
* |
重复前面的字符0次到多次 |
[root@Bison data]# grep "go*d" oldboy.txt my god ,i am not oldbey,but OLDBOY! good gd goood |
. |
代表且只能代表任意一个字符 |
1.[root@Bison data]# grep "." oldboy.txt I am oldboy teacher! I teach linux. I like badminton ball ,billiard ball and chinese chess! 2.[root@Bison data]# grep "oldb.y" oldboy.txt |
.* |
匹配所有字符 .*可以匹配0个或多个,可以匹配空行,而.匹配一个,不能匹配空行 |
[root@Bison data]# grep ".*" oldboy.txt
|
\ |
转义字符 \n匹配一个换行符 |
\.$ 以点结尾的 |
[abc] [0-9] [\.,/] |
匹配字符集合内任意一个字符,a或b或c |
[root@Bison data]# grep "[a-zA-Z0-9]" oldboy.txt I am oldboy teacher! I teach linux. I like badminton ball ,billiard ball and chinese chess! |
[^abc] |
不匹配abc中任意一个字符 |
[root@Bison data]# grep "[^a-z]" oldboy.txt |
非正则表达式
egrep sed -r awk 不需要加\
{m,n} |
\{m,n\} |
重复前面的字符m到n次 |
[root@Bison data]# grep "0\{2,3\}" oldboy.txt my qq num is 49000448. not 4900000448. |
{n} |
\{n\} |
重复前面的字符n次 |
[root@Bison data]# grep "0\{2\}" oldboy.txt my qq num is 49000448. not 4900000448. [root@Bison data]# grep -o "0\{2\}" oldboy.txt 00 00 00 |
{,n} |
\{,n\} |
重复前面的字符至多n次 |
[root@Bison data]# egrep "0{,2}" oldboy.txt my qq num is 49000448. not 4900000448. [root@Bison data]# egrep -o "0{,2}" oldboy.txt 00 0 00 00 0
|
{n,} |
\{n,\} |
重复前面的字符至少n次 |
[root@Bison data]# grep "0\{2,\}" oldboy.txt my qq num is 49000448. not 4900000448. [root@root data]# grep -o "0\{2,\}" oldboy.txt 000 00000 |
| |
\| |
表示或者;同时过滤多个字符串 |
[root@Bison data]# egrep "oldboy|oldbey" oldboy.txt I am oldboy teacher! my blog is http://oldboy.blog.51cto.com my god ,i am not oldbey,but OLDBOY! |
加号 |
\+ |
重复前一个字符一次或多次 |
[root@Bison data]# egrep "go+d" oldboy.txt my god ,i am not oldbey,but OLDBOY! good god goood |
? |
\? |
重复前一个字符0次或者一次 |
[root@Bison data]# egrep "go?d" oldboy.txt my god ,i am not oldbey,but OLDBOY! gd god |
() |
\(\) |
分组过滤,括号里的内容表示一个整体 |
[root@Bison data]# egrep "oldb(o|e)y" oldboy.txt I am oldboy teacher! my blog is http://oldboy.blog.51cto.com my god ,i am not oldbey,but OLDBOY! |
第4章 快捷键
ctrl +a |
行首 |
ctrl +c |
取消命令 |
ctrl +e |
行尾 |
ctrl +l |
清屏 |
ctrl +u |
剪切光标以前的字符 |
ctrl +k |
剪切光标以后的字符 |
tab |
补全命令 |
ctrl +shift+v |
粘贴 |
ctrl +shift+c |
复制 |
第5章 第三关考试题
本文来自博客园,作者:IT老登,转载请注明原文链接:https://www.cnblogs.com/nb-blog/p/5842644.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)