grep命令总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grep命令总结相关的知识,希望对你有一定的参考价值。
grep命令:
grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来
语法:
grep [参数] 'word' [filename]
常用参数:
-n:过滤出符合要求行的同时,连同行号一起输出
-c: 打印符合要求的行数
-v:打印不符合要求的行
--color: 匹配到的关键字用红色标识(默认就有的)
-A:后跟一个数字,空格可有可无,-A2 表示打印符合要求的行以及下面两行
-B:后跟一个数字,-B2 表示打印符合要求的行以及上面两行
-C:后跟一个数字,-C2 表示打印符合要求的行以及上下各两行
-r:把目录下面所有的文件全部遍历 【了解即可】
-i:不区分大小写
-E:能使用扩展正则表达式(grep -E = egrep)
-q:不显示任何信息
-w:精准匹配符合指定字符串的行
-e:可以匹配多个字符串
特殊符号(.*+?|):
. 任意字符,包括特殊字符,下划线,空格,
* 零个 或者 多个 *前面的字符
.* 任意数量任意字符,包括空行
*. 'r*.o' 匹配出o前面有零个或者多个任意字符的行
+ 表示 1 个或 多个 + 前面的字符 仅限egrep
? 表示 0 个或 1 个?前面的字符 仅限egrep
| 表示或者 仅限egrep
示例:
grep '[aeiou]' 1.txt 取其中任意一个进行匹配
grep '[0-9]' 1.txt 匹配任意数字
grep '[^0-9]' 1.txt 匹配包含非数字的行,只要包含非数字的行都会显示出来
grep '^[0-9]' 1.txt 取数字开头的行
grep -v '[0-9]' 1.txt 匹配不包含数字的行
grep -v '^[0-9]' 1.txt 匹配非0-9开头的行
grep '^[^0-9]' 1.txt 取不以数字开头的行,可匹配特殊符号,不包括空行
grep '^$' 1.txt 取空行,不包含任何字符的行(^表示行首;$表示行尾)
grep '^[1-9][0-9]*$' 1.txt 匹配数字1-9开头且0 个或多个数字结尾的
grep '[^a-zA-Z]' 匹配包含非字母的行,并非全部都没有字母,只要含有非字母都可以
grep -v '^#' 1.txt 去除所有以"#"开头的行
grep -v '^$' 1.txt |grep -v '^#' 去除所有空行和以 # 开头的行
grep -A 1 'root' 1.txt 过滤出包含 root 的行以及下面一行
grep 'o\{2\}' 1.txt 过滤包含2个字母o的行(指定过滤字符次数)
egrep 'roo|body' 1.txt 匹配 roo 或者 匹配 body
egrep 'r(oo)|(at)o' 1.txt 用括号表示一个整体,例子会匹配 roo 或者 ato
egrep '(oo){1,3}' 1.txt 匹配 1 到 3 次 'oo'
练习:
1.过滤出带有某个关键词的行并输出行号(/etc/passwd)
2.过滤不带有某个关键词的行,并输出行号(/etc/passwd)
3.过滤出所有包含数字的行(/etc/inittab)
4.过滤出所有不包含数字的行 (/etc/inittab)
5.把所有以 ‘#’ 开头的行去除 (/etc/inittab)
6.去除所有空行和以 ‘#’ 开头的行 (/etc/inittab)
7.过滤任意一个字符与重复字符 (/etc/passwd)
8.指定要过滤字符出现的次数 (/etc/passwd)
以上是关于grep命令总结的主要内容,如果未能解决你的问题,请参考以下文章