Linux之grep
简单介绍一下grep的用法
grep
命令用于查找文件里符合条件的字符串。
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
作用
作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查,打印匹配到的行
模式:由正则表达式的元字符及文本字符所编写出的过滤条件:
语法
Grep [options] [pattern] file
命令 参数 匹配模式 文件
参数 | 作用 |
---|---|
-v | 排除匹配结果(取反) |
-n | 显示匹配行与行号 |
-i | 不区分大小写 |
-c | 只统计匹配的行数 |
-E | 高级正则表达式 |
–color=auto | 为grep过滤结果添加颜色 |
-w | 只匹配过滤的单词 |
-o | 只输出匹配的内容 |
案例
以 /etc/passwd为例
先将文件重定向到 /opt/pwd.txt
alias //查看别名
grep -i “root” pwd.txt -n //加上行号 查找“root"
grep -i “root” pwd.txt -c //查询和root有关的行数
使用正则表达式
参数 | 作用 |
---|---|
^ | 匹配以什么开头,如^h以h开头 |
$ | 匹配以什么结尾,如h$以h结尾 |
^& | 表示空行 |
. | 匹配任意一个且只有一个字符,不能匹配空行 |
|转义字符,让特殊含义字符现出原型,还原本意 | |
* | 匹配前一个字符0次或1次 |
.* | 匹配所有内容 |
^.* | 匹配任意多个字符开头的内容 |
.*$ | 匹配以任意多个字符结尾的内容 |
案例
以1开头
以t开头
以e结尾
grep “.” 123.txt //任意一个字符
grep “o*” 123.txt //含o零次或多次
grep “.*” 123.txt //全部信息匹配
grep “.*e” 123.txt ----贪婪匹配
+号:表示匹配前一个字符1次或多次,必须使用grep -E 扩展正则
grep -E “o+” 123.txt//匹配含o的行
?号:表示匹配前一个字符0次或1次,必须使用grep -E 扩展正则
grep -E “a?” 123.txt//匹配含a的行
|号:表示或者的意思,必须使用grep -E 扩展正则
grep -E “o|e” 123.txt //查找o或者e的内容
()号:表示将一个或多个字符捆绑在一起,当做一个整体使用
grep -E “g(oo|la)d” 123.txt //查找good和glad的行