Chinaunix首页 | 论坛 | 博客
  • 博客访问: 132978
  • 博文数量: 41
  • 博客积分: 15
  • 博客等级: 民兵
  • 技术积分: 65
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-11 16:17
文章分类
文章存档

2017年(1)

2016年(5)

2015年(8)

2014年(13)

2013年(10)

2012年(4)

我的朋友

分类: LINUX

2014-12-27 00:19:50

原文地址:grep 作者:

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) |
给主人留下些什么吧!~~