Thursday, June 1, 2006

GNU: grep 2.5

GNU/grep
著名开源软件撰稿人Michael Stutz在Linux.com上写作了一篇关于grep新特新的文章,其中描述了主要的几个非常有用的新特性:

  • 新的选项 -o
    新选项 -o 允许用户只匹配字符串而不是某一行
    比如想要抓取某个文件中的URL地址
    egrep -o '(((http(s)?|ftp|telnet|news|gopher)://|mailto:)[^\(\)[:space:]]+)' logfile
    抓取某个文件中的电子邮件email地址
    egrep -o '\@/:[:space:]]+\>@[a-zA-Z_\.]+?\.[a-zA-Z]{2,3}' somefile
    抓取某个邮件存档中的所有发信人地址导出并排序
    grep '^From: ' huge-mail-archive | egrep -o '\@/:[:space:]]+\>@[a-zA-Z_\.]+?\.[a-zA-Z]{2,3}' | sort | uniq > email.addresses

  • 使用带颜色的匹配输出
    grep --color=always "regexp" myfile | less -R
    也可以通过定义 GREP_COLOR 变量设置颜色
    30 black
    31 red
    32 green
    33 yellow
    34 blue
    35 purple
    36 cyan
    37 white

    比如说:
    GREP_COLOR=32; export GREP_COLOR; grep pattern myfile

  • 允许用户使用Perl的正则表达式
    这里新引进了 -P 参数,比如匹配一个系统响铃
    grep -P '\cG' myfile
  • 标准输入行为
    如比你只想匹配 /usr/local/src 中 包含 “linux" 的txt文件
    grep -r --include=*.txt linux /usr/local/src
    还可以指定特定的设备
    grep -r --device=skip linux /
    当搜索一个大文档时,查找10匹配就退出
    grep --line-buffered -m 10 huge.file

  • POSIX 的升级
    升级到符合POSIX 2标准,特别对于正则表达式


就我个人而言是非常喜欢grep的,在系统管理上有很大的用处,当然对与一个Unix/Linux的程序员也是一个非常好的工具,更快更实用,就是GNU/grep的设计标准。

No comments:

Post a Comment