Linux学习1 ----正则表达式&grep
正则表达式
- 通配符是大部分普通命令都支持的,用于查找文件或目录
- 正则表达式是通过三剑客命令在文件(数据流)中过滤内容
Linux 三剑客
- grep:文本过滤工具
- sed:stream editor,流编辑器;文本编辑工具
- awk:Linux的文本报告生成器(格式化文本),Linux上是gawk
正则表达式分类
-
基本正则表达式
对应字符有^ $ . [] *
-
扩展正则表达式
基本正则加上 () {} ? + |
基本正则表达式
- 匹配字符
- 匹配次数
- 位置锚定
| 符号 | 作用 |
|---|---|
| ^ | 尖角号,用于模式的最左边,如 "^oldboy",匹配以oldboy单词开头的行 |
| $ | 美元符,用于模式的最右边,如"oldboy$",表示以oldboy单词结尾的行 |
| ^$ | 组合符,表示空行 |
| . | 匹配任意一个且只有一个字符,不能匹配空行 |
| \ | 转义字符 |
| * | 匹配前一个字符(连续出现)0次或1次以上,重复0次代表空,即匹配所有内容 |
| .* | 组合符,匹配所有内容 |
| ^.* | 组合符,匹配任意多个字符开头的内容 |
| .*$ | 组合符,匹配以任意多个字符结尾的内容 |
| [abc] | 匹配[]集合内的任意一个字符,a或b或c,可以写成[a-c] |
| [^abc] | 匹配除了后面的任意字符,表示对[abc]的取反 |
扩展正则表达式
| 字符 | 作用 |
|---|---|
| + | 匹配前一个字符1次或多次 |
| [😕]+ | 匹配括号内的字符(":" 或者"/")1次或多次 |
| ? | 匹配前一个字符0次或1次 |
| \ | 表示或者,同时过滤多个字符串 |
| () | 分组过滤,被括起来的内容表示一个整体 |
| a | 匹配一个字符最少n次,最多m次 |
| a | 匹配一个字符最少n次 |
| a | 匹配一个字符正好n次 |
| a | 匹配一个字符最多m次 |
grep
-
作用:文本搜索工具,根据用户指定的模式(过滤条件)对目标文本逐行匹配检查,打印匹配到的行
-
模式:由正则表达式的 元字符 及 文本字符 所编写出的 过滤条件
语法:
grep [option] [pattern] file
命令 参数 匹配模式 文件数据
-i:ignorecase 忽略字符大小写
-o: 仅显示匹配到的字符本身
-v: --invert-match:显示不能被模式匹配到的行
-E:支持使用扩展的正则表达式元字符
-q:--quiet 静默模式,即不输出任何信息
- grep命令里的 匹配模式 就是你想要找的东西,可以是普通的文字符号,也可以是正则表达式
| -v | 排除匹配结果 |
|---|---|
| -n | 显示匹配行与行号 |
| -i | 不区分大小写 |
| -c | 只统计匹配的行数 |
| -E | 使用egrep命令,用于扩展正则表达式 |
| --color=auto | 为grep过滤结果添加颜色 |
| -w | 只匹配过滤的单词 |
| -o | 只输出匹配的内容 |
- 案例
grep -i "root" pwd.txt
grep "root" pwd.txt -n -i #找出pwd.txt文本中含 root 字符串的行,且显示行号,不区分大小写
grep -i "^i" pwd.txt #找出以i开头的行
grep -n "/bin/bash$" pwd.txt #找出所有以 /bin/bash 结尾的行,且显示行号
播种和收获通常不在一个季节,而中间的过程叫做坚持~

浙公网安备 33010602011771号