grep命令学习

1.grep命令简介

    grep命令是Linux系统中非常强大的文本搜索工具,全名Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户.根据某种模式(Pattern)搜索文本,并将符合模式的文本行显示出来.其中模式:由文本字符和正则表达式的元字符组合而成的匹配条件.

 

2.命令格式

   grep [options] PATTERN [FILE...]

options选项:

   -i 忽略模式的大小写

   --color 用颜色标记

   -v  反向查找

   -o  只显示被模式匹配到的字符串

    -c  只输出匹配行的计数

   -n  显示匹配行及行号

   -v  显示不包含匹配文本的所有行

 

PATTERN字段:

   正则表达式:

  • 匹配任意单个字符 "."     grep 'r..t' /etc/passwd
  • 匹配前一个字符任意次 "*"
  • 匹配任意长度的任意字符".*"    grep 'a.*b' /333/testre
  • 匹配前一个字符1次或者0次 “\?"    grep 'a\?b' /333/testre
  • 匹配前面字符至少n,至多m "\{n,m\}"    grep 'a\{1,3\}b' /333/testre

  

  • 位置定义为行首"^",    grep '^r..t' /etc/passwd
  • 位置定义为行尾"$",     grep 'w$'  /etc/initab
  • 空白行 "^$" ,    grep '^$'  /etc/fstab | wc -l
  • 匹配指定范围内的单个字符 ”[]"
  • 匹配指定范围外的单个字符 "[^]"
  • [[:digit:]] [[:lower:]] [[:upper:]] [[:space:]] [:alpha:]] [[:alnum:]]

例如:匹配以空白字符+数字结尾的行?  grep '[[:space:]]*[[:digit:]]$' /etc/initab

 

  • 后边的任意字符作为单词首部出现 "\<" 
  • 前边的任意字符作为单词首部出现 "\>"
  • 分组内容 "\(\)"    grep "\(ab\)*" /333/testre

基本正则表达式:

  • 字符匹配: "." "[]" "[^]"
  • 次数匹配: "*" "\?" "\{m,n\}" ".*"
  • 位置匹配: "^" "$" "\<" "\>" "\b" "\(\) \1 \2 \3"

 

扩展正则表达式:

    grep -E  / egrep

    次数匹配“*” “?” “+”其前字符至少一次  grep -E '^[[:space:]]+' /boot/grup/group.conf '

    "|"  或者  grep -E 'c|cat' /333/testre

 

例子:找出/etc/networks中所有的1-255的整数

grep -E --color '\<([1-9] | [1-9][0-9] | 1[0-9][[0-9] | 2[0-4][0-9] | 25[0-5]' /etc/networks

 

 

  

posted @ 2015-01-03 22:23  晓风_7  阅读(281)  评论(0编辑  收藏  举报