Chinaunix首页 | 论坛 | 博客
  • 博客访问: 90488
  • 博文数量: 41
  • 博客积分: 1649
  • 博客等级: 上尉
  • 技术积分: 415
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-20 17:02
文章分类

全部博文(41)

文章存档

2011年(4)

2010年(1)

2009年(14)

2008年(2)

2006年(6)

2005年(14)

我的朋友

分类:

2005-07-27 14:00:23

文本过滤工具(grep )

* grep:
传统的 grep 程序, 在没有参数的情况下, 只输出符合 RE 字符串之句子. 常见参数如下:
-v: 逆反模示, 只输出"不含" RE 字符串之句子.
-r: 递归模式, 可同时处理所有层级子目录里的文件.
-q: 静默模式, 不输出任何结果(stderr 除外. 常用以获取 return value, 符合为 true, 否则为 false .)
-i: 忽略大小写.
-w: 整词比对, 类似 .
-n: 同时输出行号.
-c: 只输出符合比对的行数.
-l: 只输出符合比对的文件名称.
-o: 只输出符合 RE 的字符串. (gnu 新版独有, 不见得所有版本都支持.)
-E: 切换为 egrep .

* egrep:
为 grep 的扩充版本, 改良了许多传统 grep 不能或不便的操作. 比方说:
- grep 之下不支持 ? 与 + 这两种 modifier, 但 egrep 则可.
- grep 不支持 a|b 或 (abc|xyz) 这类"或一"比对, 但 egrep 则可.
- grep 在处理 {n,m} 时, 需用 { 与 } 处理, 但 egrep 则不需.
诸如此类的... 我个人会建议能用 egrep 就不用 grep 啦... ^_^

* fgrep:
不作 RE 处理, 表达式仅作一般字符串处理, 所有 meta 均失去功能.

精确匹配
抽取字符串“4 8”,返回结果包含诸如4 8 4和4 8 3等包含“4 8”的其他字符串,实际上应精确抽取只包含4 8的各行。
使用g r e p抽取精确匹配的一种更有效方式是在抽取字符串后加 >。假定现在精确抽取4 8,方法如下:

代码:

grep -w '48' file
grep '48>' file
grep '<48>' file

类名

g r e p允许使用国际字符模式匹配或匹配模式的类名形式。 类名及其等价的正则表达式类等价的正则表达式类等价的正则表达式。

[ [ : u p p e r : ] ] [ A - Z ] [ [ : a l n u m : ] ] [ 0 - 9 a - zA-Z]
[ [ : l o w e r : ] ] [ a - z ] [ [ : s p a c e : ] ] 空格或t a b键
[ [ : d i g i t : ] ] [ 0 - 9 ] [ [ : a l p h a : ] ] [ a - z A - Z ]

Solaris 上 /usr/xpg4/bin下的 grep 支持类名。

阅读(1017) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~