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)

论坛相关帖子:

    http://ask.apelearn.com/question/11379 

    http://ask.apelearn.com/question/11358 

    http://ask.apelearn.com/question/15161 

    http://ask.apelearn.com/question/11712 

grep、sed、awk常用示例:    http://ask.apelearn.com/question/7188 

2018-02-06 16:20 举报
已邀请:
0

qidi2015

赞同来自:

grep . 1.txt    去除所有空行

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: