bash 正则表达式,文本文件查找 grep egrep
2015-02-28 15:16
411 查看
1. 语法+选项
语法: grep [-cinvABC] 'word' filename
-c :打印符合要求的行数
-n :在输出符合要求的行的同时连同行号一起输出
-v :打印不符合要求的行
-A :后跟一个数字(有无空格都可以),例如 –A2
则表示打印符合要求的行以及下面两行
-B :后跟一个数字,例如 –B2 则表示打印符合要求
的行以及上面两行
-C :后跟一个数字,例如 –C2 则表示打印符合要求
的行以及上下各两行
-r : 会把目录下面所有的文件全部遍历
grep -r 'root' /etc/ 将目录下所有文件全查一次
[0-9] 取括号中 任意1个
2. 例子介绍
过滤出带有某个关键词的行并输出行号 grep -n 'root' 1.txt
过滤出不带有某个关键词的行并输出行号grep -n -v 'root' 1.txt
过滤出所有包含数字的行 grep '[0-9]' 1.txt
过滤出所有不包含数字的行 grep -v '[0-9]' 1.txt
去除所有以'#'开头的行 grep -v '^#' 1.txt
去除所有空行和以'#'开头的行 grep -v '^$' 1.txt|grep -v '^#'
过滤出以英文字母开头的行 grep '^[a-zA-Z]' 1.txt
过滤出以非数字开头的行 grep '^[^0-9]' 1.txt
过滤任意一个或多个字符 grep 'r.o' 1.txt;
grep 'r*t' 1.txt; grep 'r.*t' 1.txt
. 表示任意一个字符;*表示零个或多个前面的字符 ;
.*表示零个或多个任意字符,空行也包含在内
指定过滤字符次数 grep 'o\{2\}' 1.txt
3. egrep
egrep工具 是grep工具的扩展
egrep 'o+' 1.txt 表示1个或1个以上前面字符
egrep 'o?' 1.txt 表示0个或者1个前面字符
egrep 'roo|body' 1.txt 匹配roo或者匹配body
egrep 'r(oo)|(at)o' 1.txt 用括号表示一个整体
egrep '(oo)+' 1.txt 表示1个或者多个 'oo'
4. . * + ? 总结
. 表示任意一个字符(包括特殊字符)
* 表示零个或多个*前面的字符
.* 表示任意个任意字符(包含空行)
+ 表示1个或多个+前面的字符
? 表示0个或1个?前面的字符
其中,+ ? grep不支持,egrep才支持。
^ 锚定行首,此字符后面的字符,必须出现在行首
$锚定行尾,此字符后面的字符,必须出现在行尾
[^]中的 "^"表示 非的意思
^$ 空行
\<或者\b 后面的任意字符 必须做为单词手部出现
\>或者\b 前面的任意字符,必须作为单词的尾部出现
\<root\> 为整个单词出现
\(\)分组: \(ab\)* 表示出现任意个 ab
扩展分组不需要加脱意;
a|b 表示 a 或者 b
语法: grep [-cinvABC] 'word' filename
-c :打印符合要求的行数
-n :在输出符合要求的行的同时连同行号一起输出
-v :打印不符合要求的行
-A :后跟一个数字(有无空格都可以),例如 –A2
则表示打印符合要求的行以及下面两行
-B :后跟一个数字,例如 –B2 则表示打印符合要求
的行以及上面两行
-C :后跟一个数字,例如 –C2 则表示打印符合要求
的行以及上下各两行
-r : 会把目录下面所有的文件全部遍历
grep -r 'root' /etc/ 将目录下所有文件全查一次
[0-9] 取括号中 任意1个
2. 例子介绍
过滤出带有某个关键词的行并输出行号 grep -n 'root' 1.txt
过滤出不带有某个关键词的行并输出行号grep -n -v 'root' 1.txt
过滤出所有包含数字的行 grep '[0-9]' 1.txt
过滤出所有不包含数字的行 grep -v '[0-9]' 1.txt
去除所有以'#'开头的行 grep -v '^#' 1.txt
去除所有空行和以'#'开头的行 grep -v '^$' 1.txt|grep -v '^#'
过滤出以英文字母开头的行 grep '^[a-zA-Z]' 1.txt
过滤出以非数字开头的行 grep '^[^0-9]' 1.txt
过滤任意一个或多个字符 grep 'r.o' 1.txt;
grep 'r*t' 1.txt; grep 'r.*t' 1.txt
. 表示任意一个字符;*表示零个或多个前面的字符 ;
.*表示零个或多个任意字符,空行也包含在内
指定过滤字符次数 grep 'o\{2\}' 1.txt
3. egrep
egrep工具 是grep工具的扩展
egrep 'o+' 1.txt 表示1个或1个以上前面字符
egrep 'o?' 1.txt 表示0个或者1个前面字符
egrep 'roo|body' 1.txt 匹配roo或者匹配body
egrep 'r(oo)|(at)o' 1.txt 用括号表示一个整体
egrep '(oo)+' 1.txt 表示1个或者多个 'oo'
4. . * + ? 总结
. 表示任意一个字符(包括特殊字符)
* 表示零个或多个*前面的字符
.* 表示任意个任意字符(包含空行)
+ 表示1个或多个+前面的字符
? 表示0个或1个?前面的字符
其中,+ ? grep不支持,egrep才支持。
^ 锚定行首,此字符后面的字符,必须出现在行首
$锚定行尾,此字符后面的字符,必须出现在行尾
[^]中的 "^"表示 非的意思
^$ 空行
\<或者\b 后面的任意字符 必须做为单词手部出现
\>或者\b 前面的任意字符,必须作为单词的尾部出现
\<root\> 为整个单词出现
\(\)分组: \(ab\)* 表示出现任意个 ab
扩展分组不需要加脱意;
a|b 表示 a 或者 b
相关文章推荐
- llinux文本三剑客之grep、egrep及相应的正则表达式和用法
- 【Linux相识相知】文本处理工具之grep\egrep\fgrep及正则表达式
- grep(1) 正则表达式文本查找工具
- 基本正则表达式和文本处理工具之grep、egrep和fgrep
- 在Linux中使用grep和egrep结合正则表达式查找字符
- 文本查找工具grep,正则表达式,扩展表达式
- 查找目录下的所有文件中是否含有某个字符串 :正则表达式、find、grep、xargs、awk、sed等
- 文本搜索必学命令-grep egrep fgrep用法以及正则表达式
- 文件内容查找(一)grep正则表达式
- Linux 文本处理,文本工具,查看,分析,统计文本文件,grep,正则表达式
- 正则表达式 grep egrep &nbs
- 文本查找工具grep及正则表达式的使用
- 文本查找工具grep的使用(含正则表达式用法)
- centos 正则,grep,egrep,流式编辑器 sed,awk -F 多个分隔符 通配符 特殊符号. * + ? 总结 问加星 cat -n nl 输出文件内容并加上行号 alias放~/.bash_profile 2015-4-10 第十三节课
- 文本搜索必学命令-grep egrep fgrep用法以及正则表达式
- 文本检索秘技之正则表达式grep和egrep
- 文本搜索之grep、fgrep、egrep以及正则表达式
- 文本搜索必学命令-grep egrep fgrep用法以及正则表达式 推荐
- linux正则表达式 grep egrep用法
- grepwin 1.5.9正则搜索/替换文件文本