grep简介:
grep(global search regular expression)是一个强大的文本搜索工具。grep使用正则表达式搜索文本,并把匹配的行打印出来。UNIX的grep家族包括grep、egrep、fgrep
1.grep 使用BRE书写匹配模式
2.egrep 使用ERE书写匹配模式,等效于grep -E。
3.fgrep 不使用任何正则表达式书写匹配模式(以固定字符串对待),执行快速搜索等效于grep -F
grep 命令格式
grep [options] PATTERN [FILE...]
其中PATTERN是用正则表达式书写的模式。
FILE是要查找的文件,可以是用空格间隔的多个文件,省略FILE是将在标准输入里查找。
常用的参数:
-c 只显示匹配行的次数
-i 搜索时不区分大小写
-n 输出匹配行的行号
-v 输出不匹配的行
FILE可以使用shell的通配符在多个文件中查找PATTERN
通常必须使用单引号将整个模式PATTERN括起来
grep命令不会对输入文件进行任何修改或影响 可以使用输出重定向保存文件
如果使用grep命令查找指定的字符串(不使用正则表达式),PATTERN可以不用单引号括起来
grep使用举例:
# 在文件 myfile 中查找包含指定的字符串的行
$ grep osmond myfile
$ fgrep osmond myfile
# 在文件myfile1 myfile2 myfile3 中查找包含是定字符串的行
$ grep 'osmond' myfile1 myfile2 myfile3
$ fgrep 'osmond' myfile1 myfile2 myfile3
# 在当前目录的所有文件中查找包含指定的字符串的行
$ grep osmond *
$ fgrep osmond *
# 在当前目录的所有文件中查找包含字符 * 的行
$ grep '*' *
$ fgrep '*' *
# 在文件myfile 中查找包含字符 $ 的行
# 为了强制将\$传递给grep命令,必须使用\\,\字符可通知grep命令将其后的字符视作原义再发而不是元字符
# 如果使用fgrep名, 则可以不必使用\的转义字符
$ grep \\$ myfile
$ grep '\$' myfile
$ fgrep $ myfile
$ fgrep '$' myfile
# 匹配myfile中所有空行
$ grep '^$' myfile
# 显示myfile中第一个字符为字母的所有行
$ grep '^[a-zA-Z]' myfile
# 在文件myfile中查找首字母不是 # 的行(即过滤掉注释行)
$ grep -v '^#' myfile
# 显示所有包含至少有5个连续小写字符的字符串的行
$ grep '[a-z]\{5\}' myfile
# 在文件中查找包含日期格式(yyy-mm-dd)的行
$ grep '[12][0-9]\{3\}-[01][0-9]-[0-3][0-9]' myfile
$ egrep '[12[0-9]{3}-[01][0-9]-[03][0-9]' myfile
# 在文件中查找与abc 或xyz 字符串匹配的所有行
$ egrep 'abc|xyz' myfile
# 通过管道过滤ls输出的内容,只显示以可写的文件或目录的行
$ ls -l |grep '[-d].w..w..w.'
# 通过管道过滤ls输出的内容,只显示以~ 或 - 或 .bak结尾的行
$ ls | egrep '(~|-|\.bak)$'
阅读(1169) | 评论(0) | 转发(0) |