linux中grep命令的用法

作为linux中最为常用的三大文本(awk,sed,grep)处理工具之一,掌握好其用法是很有必要的。

首先谈一下grep命令的常用格式为:grep  [选项]  ”模式“  [文件]

grep家族总共有三个:grep,egrep,fgrep。

常用选项:

1.命令格式:

    grep [option] pattern file

  2.命令功能:

    用于过滤/搜索的特定字符。可使用正则表达式能多命令配合使用,使用上十分灵活。

  3.命令参数:

    -a  --text  #不要忽略二进制的数据。

    -A  --after-context=<显示行数>  #除了显示符合范本样式的那一列之外,并显示该行之后的内容。

    -b  --byte-offset  #在现实符合样式的那一行之前,标识出该行第一个字符的编号。

    -B显示行数  --before-context=<显示行数>  #除了显示符合样式的那一行之外,并显示该行之前的内容。

    -c  --count  #计算符合样式的列数。

    -C<显示行数>  --context=<显示行数>或-<显示行数>  #除了显示符合样式的那一行之外,并显示该行前后的内容。

    -d  --directories  #当指定要查找的是目录而非文件时,必须使用这项参数,否则grep 指令将回报信息并停止动作。

    -e  --regexp=<范本样式>  #指定字符串作为查找文件内容的样式。

    -E  --extended-regexp  #将样式为延伸的普通表示法来使用。

    -f  --file=<规则文件>  #指定规则文件,其内容含有一个或多个规则样式,让 grep 查找符合规则条件的文件内容,格式为每行一个规则样式。

    -F  --fixed-regexp  #将样式视为固定字符串的列表。

    -G  --basic-regexp  #将样式视为普通的表达法来使用。

    -h  --no-filename  #在显示符合样式的那一行之前,不标示该行所属的文件名称。

    -H  --with-filename  #在显示符合样式的那一行之前,表示该行所属的文件名称。

    -i  --ignore-case  #忽略字符大小写的差别。

    -l  --file-with-matches  #列出文件内容符合指定的样式的文件名称。

    -L  --files-without-match  #列出文件内容不符合指定的样式的文件名称。

    -n  --line-number  #在显示符合样式的那一行之前,标示出该行的列数编号。

    -q  --quiet或--silent  #不显示任何信息。

    -r  --recursive  #此参数的效果和指定的 “-d recurse” 参数相同。

    -s  --no-messages  #不显示错误信息。

    -v  --revert-match  #显示不包含匹配文本的所有行。

    -V  --version

    -w  --word-regexp    #只显示全字符合的列。

    -x  --line-regexp  #只显示全列符合的列。

    -y  #此参数的效果和指定 “-i”  参数相同。

  4.规则表达式:

    grep 的规则表达式:

    ^  #锚定行的开始,如: ‘ ^grep ’ 匹配所有以 grep 开头的行。

    $  #锚定行的结束,如: ‘grep $ ’ 匹配所有以 grep 结尾的行。

    .  #匹配一个非换行符的字符,如  ‘gr.p’ 匹配gr 后接一个任意字符,然后是 P.

    *  #匹配零个或多个先前字符,如  ‘*grep ’ 匹配所有一个或多个空格后紧跟 grep 的行。

    .*  #一起用代表任意字符。

    []  #匹配一个指定范围内的字符,如 ‘[Gg]rep’匹配 Grep 和grep 。

    [^]  #匹配一个不在指定范围内的字符,如 ‘[^A-FH-Z]rep’ 匹配不包含A-R和 T-Z的一个字母开头,紧跟 rep 的行。

    \(..\)  #标记匹配字符,如 ‘\(love\)’,love 被标记为1。

    \<    #锚定单词的开始,如:‘\<grep’ 匹配包含以 grep开头的单词的行。

    \>    #锚定单词的结束,如‘grep\>’匹配包含以grep 结尾的单词的行。

    x\{m\}  #重复字符x,m 次,如 ‘0\{5\}’匹配包含5个0的行。

    x\{m,\}  #重复字符x,至少m次,如 ‘o\{5,\}’ 匹配至少有5个o 的行。

    x\{m,n\}  #重复字符x,至少m次,不多于n次,如 ‘o\{5,10\}’匹配5--10个o的行。

    \w    #匹配文字和数字字符,也就是 [A-Za-z0-9], 如‘G\w*p’ 匹配以G后跟零个或多个文字或数字字符,然后是P。

    \W    #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。

    \b    #单词锁定符,如 ‘\bgrep\b’ 只匹配 grep。

    POSIX字符:

    为了在不同国家的字符编码中保持一至,POSIX(the portable operating system interface )增加了特殊的字符类,如[:alnum:]是[A-Za-z0-9]的另一个写法。

    要把它们放到[]号内才能成为正则表达式,如[A-Za-z0-9] 或[[:alnum:]]。在Linux下的grep 除fgrep 外,都支持 POSIX的字符类。

    [:alnum:]  #文字数字字符

    [:alpha:]   #文字字符

    [:digit:]    #数字字符

    [:graph:]    #非空字符(非空格、控制字符)

    [:lower:]    #小写字符

    [:cntrl:]    #控制字符

    [:print:]    #非空字符(包括空格)

    [:punct:]    #标点符号

    [:space:]    #所有空白字符(新行,空格,制表符)

    [:upper:]    #大写字符

    [:xdigit:]    #十六进制数字(0-9,a-f,A-F)

  5.使用实例:

  实例1:查找指定进程

  命令:ps  -ef | grep svn

  实例2:查找指定进程个数

  命令:ps -ef | grep  svn -c

      ps   -ef  |  grep  -c  svn

  实例3:从文件中读取关键词进行搜索

  命令:cat test.txt  | grep  -f  test2.txt

    输出  test.txt 文件中含有从 test2.txt 文件中读取出的关键词的内容行,-f 参数

  实例3:从文件读取关键词进行搜索且显示行号

  命令:cat  test.txt  |  grep -nf  test2.txt  

     -n 参数显示行号,

  实例4:从文件中查找关键词

  命令:grep 'linux'  test.txt

  实例5:从多个文件中查找关键词

  命令:grep ‘Linux ’   test.txt  test2.txt

    多文件时,输出查询到的信息内容行时,会把文件的命名在行最前面输出并且加上“:”作为标识符

      grep 'linux'  *.txt     在所有  txt 文件中查找 Linux 字符。

  实例6:grep 不显示本身进程

  命令:  ps  aux |  grep \[s]sh  

    ----warning:bad syntax. 居然是语法错误的警告。

  实例7:找出以 u  开头的行内容

  命令:  cat test.txt  |  grep  ^u

  实例8: 输出非 u  开头的行内容

  命令: cat  test.txt | grep ^[^u]

  实例9:输出以 hat 结尾的行内容

  命令: cat  test.txt  | grep  hat$

  实例10:输出 IP 地址  ifconfig  eth0 |  grep "[0-9]\{1,3\}\." ···后面省略,这个可以匹配出一个  192.

      [0-9] 匹配一个0-9内的数字,  x\{1,3\} 重复字符x,至少1次,不多于3次。  \.   \是转译符,表示后面的 “.” 就表示  “.”  。

  实例11:显示包含 ed 或者  at 字符的内容行

  命令: cat test.txt |  grep -E   "ed | at "

  实例12:显示当前目录下面以 .txt  结尾的文件中的所有包含每个字符串至少有7个连续小写字符的字符串的行。

  命令:grep '[a-z]\{7\}'*.txt

grep命令用法的更多相关文章

  1. <三剑客> 老三:grep命令用法

    grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正 ...

  2. Grep 命令 用法大全

    查找x文件 find / -name "x*" -ls 查找文件中x所在的行数 grep -n "x" -r *find . -name "*.jav ...

  3. linux命令——Grep 命令 用法大全

    1. 参数: -I :忽略大小写 -c :打印匹配的行数 -l :从多个文件中查找包含匹配项 -v :查找不包含匹配项的行 -n:打印包含匹配项的行和行标 2.RE(正则表达式) \ 忽略正则表达式中 ...

  4. linux中的grep命令用法

    原文请移驾:http://blog.csdn.net/greytree/article/details/428532 grep -- print lines matching a pattern (将 ...

  5. grep 命令操作

    linux grep命令 1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressi ...

  6. 由一条Linux的grep命令说起

    今天在开发的时候,看到同事使用了这样的一条linux命令 grep 'class YourClass' -rwi * |grep -v svn 想到了 grep命令的,几个参数. -r 明确要求搜索子 ...

  7. 强大的grep命令

    1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全 ...

  8. linux grep命令总结

    风生水起善战者,求之于势,不责于人,故能择人而任势. 博客园    首页    新随笔    联系    订阅    管理 posts - 791,  comments - 394,  trackba ...

  9. find和grep命令合集

    linux grep命令 1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressi ...

随机推荐

  1. day57 choise字段与ajax

    一.choice字段. 在django的orm中,创建如同性别,民.族等可选择的字段时,可以选择使用choice字段进行定义. 这样的定义可以使用简单的数字代替数据量大的字符,减少数据库的负担. ch ...

  2. selenium定位元素的八种方法

    web driver提供了八种元素定位的方法: id, name, class name, tag name, link text, partial link text, xpath, css sel ...

  3. Springboot上传图片并访问

    Springboot上传图片并访问 步骤 配置绝对路径,并将这个绝对路径添加到springboot静态资源目录中. 文件上传使用绝对路径保存.返回web相对路径,前端加上域名和项目路径,生成完整的路径 ...

  4. USACO Corn Fields

    洛谷 P1879 [USACO06NOV]玉米田Corn Fields 洛谷传送门 题目描述 Farmer John has purchased a lush new rectangular past ...

  5. MySQL实战45讲学习笔记:第二十七讲

    一.一主多从的切换正确性 在前面的第24.25和26篇文章中,我和你介绍了 MySQL 主备复制的基础结构,但这些都是一主一备的结构. 大多数的互联网应用场景都是读多写少,因此你负责的业务,在发展过程 ...

  6. centos的key登录,关闭密码登录

    1.删除机器原有的key rm -rf /root/.ssh 2.创建key[root@rain ~]# ssh-keygen -t rsa一路回车 3.改名[root@rain ~]# mv /ro ...

  7. 【mysql报错】MySQL5.7.27报错“[Warning] Using a password on the command line interface can be insecure.”

    MySQL5.7.27报错“[Warning] Using a password on the command line interface can be insecure.”在命令行使用密码不安全警 ...

  8. UVA 291 The House Of Santa Claus DFS

    题目: In your childhood you most likely had to solve the riddle of the house of Santa Claus. Do you re ...

  9. 时间复杂度o(1), o(n), o(logn), o(nlogn)

    1.时间复杂度o(1), o(n), o(logn), o(nlogn).算法时间复杂度的时候有说o(1), o(n), o(logn), o(nlogn),这是算法的时空复杂度的表示.不仅仅用于表示 ...

  10. 程序基于InstallShield2013LimitedEdition的安装和部署

    在VS2012之前,我们做安装包一般都是使用VS自带的安装包制作工具来创建安装包的,VS2012.VS2013以后,微软把这个去掉,集成使用了InstallShield进行安装包的制作了,虽然思路差不 ...