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 结尾的行,且显示行号
posted @ 2023-12-31 23:39  shog808  阅读(17)  评论(0)    收藏  举报