grep命令总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grep命令总结相关的知识,希望对你有一定的参考价值。

grep命令:

    grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来


语法:

    grep [参数] 'word' [filename]


常用参数:

  • -n:过滤出符合要求行的同时,连同行号一起输出

  • -c: 打印符合要求的行数

  • -v:打印不符合要求的行

  • --color: 匹配到的关键字用红色标识(默认就有的)

  • -A:后跟一个数字,空格可有可无,-A2 表示打印符合要求的行以及下面两行

  • -B:后跟一个数字,-B2 表示打印符合要求的行以及上面两行

  • -C:后跟一个数字,-C2 表示打印符合要求的行以及上下各两行

  • -r:把目录下面所有的文件全部遍历 【了解即可】

  • -i:不区分大小写

  • -E:能使用扩展正则表达式(grep -E  = egrep)

  • -q:不显示任何信息

  • -w:精准匹配符合指定字符串的行

  • -e:可以匹配多个字符串


特殊符号(.*+?|):

    . 任意字符,包括特殊字符,下划线,空格,

    * 零个 或者 多个 *前面的字符

    .* 任意数量任意字符,包括空行

    *. 'r*.o' 匹配出o前面有零个或者多个任意字符的行

    +  表示 1 个或 多个 + 前面的字符 仅限egrep

     表示 0 个或 1 个?前面的字符 仅限egrep

     |   表示或者 仅限egrep



示例:

  1. grep '[aeiou]' 1.txt 取其中任意一个进行匹配

  2. grep '[0-9]' 1.txt 匹配任意数字

  3. grep '[^0-9]' 1.txt 匹配包含非数字的行,只要包含非数字的行都会显示出来

  4. grep '^[0-9]' 1.txt 取数字开头的行

  5. grep -v '[0-9]' 1.txt 匹配不包含数字的行

  6. grep -v '^[0-9]' 1.txt 匹配非0-9开头的行

  7. grep '^[^0-9]' 1.txt 取不以数字开头的行,可匹配特殊符号,不包括空行

  8. grep '^$' 1.txt 取空行,不包含任何字符的行(^表示行首;$表示行尾)

  9. grep '^[1-9][0-9]*$' 1.txt 匹配数字1-9开头且0 个或多个数字结尾的

  10. grep '[^a-zA-Z]' 匹配包含非字母的行,并非全部都没有字母,只要含有非字母都可以

  11. grep -v '^#' 1.txt 去除所有以"#"开头的行

  12. grep -v '^$' 1.txt |grep -v '^#' 去除所有空行和以 # 开头的行

  13. grep -A 1 'root' 1.txt 过滤出包含 root 的行以及下面一行

  14. grep 'o\{2\}' 1.txt 过滤包含2个字母o的行(指定过滤字符次数)

  15. egrep 'roo|body' 1.txt 匹配 roo 或者 匹配 body

  16. egrep 'r(oo)|(at)o' 1.txt 用括号表示一个整体,例子会匹配 roo 或者 ato

  17. egrep '(oo){1,3}' 1.txt 匹配 1 到 3 次 'oo'


练习:

    1.过滤出带有某个关键词的行并输出行号(/etc/passwd)

    2.过滤不带有某个关键词的行,并输出行号(/etc/passwd)

    3.过滤出所有包含数字的行(/etc/inittab)

    4.过滤出所有不包含数字的行 (/etc/inittab)

    5.把所有以 ‘#’ 开头的行去除 (/etc/inittab)

    6.去除所有空行和以 ‘#’ 开头的行 (/etc/inittab)

    7.过滤任意一个字符与重复字符 (/etc/passwd)

    8.指定要过滤字符出现的次数 (/etc/passwd)

    

以上是关于grep命令总结的主要内容,如果未能解决你的问题,请参考以下文章

grep 命令总结

grep命令总结

grep命令最经常使用的功能总结

Linux中重定向管道和grep命令总结

Linux中重定向管道和grep命令总结

Linux中重定向管道和grep命令总结