Linux 基础之 Grep

GREP是Global search Regular Expression and Print out the line的简称,即全面搜索正则表达式并把行打印出来。GREP是一种强大的文本搜索工具,也是Linux 中最广泛使用的命令之一。本篇重点介绍grep命令,以及grep命令与正则表达式结合使用.

基本介绍

grep命令由选项、模式和文件三部分组成,它在一个或多个文件中搜索满足模式的文本行,模式后的所有字符串被看做文件名,文件名可以有多个, 支持通配符写法,搜索的结果被打印到屏幕,不影响原文件的内容。grep命令的选项用于对搜索过程进行补充说明,grep命令的选项及其意义如下表所示。

选项 功能
-i 忽略大小写
-w 匹配单独完整的单词
-I 仅列出符合匹配的文件,而不列出行
-r 递归匹配
-n 列出行并显示行号
-v 反向匹配
-c 显示匹配行数,不显示内容
-f file 从文件file中提取模板作为匹配模式
-E 使用扩展正则表达式
-F 快速匹配,不使用正则表达式
-A n 打印匹配行及其后n行
-B n 打印匹配行及其前n行
-C n 打印匹配行及其前后n行
-o 只显示匹配到的内容
-q 不输出内容,以退出状态表示搜索结果

正则表达式

将带元字符的正则表达式用于grep命令能够更灵活地匹配信息,使用时需要使用单引号将正则表达式引起来,以免发生一些不可预知的错误。

模式 功能
'^h' 查找以h符号开头的行
'^$' 匹配空白行
'^/.../' 匹配以中间含有三个字符的斜线对开头的行
'^/.*/' 匹配以斜线对开头的行,里面可以有任何内容
[:alpha:] 匹配字符
[:digit:] 匹配数字
[:alnum:] 匹配字符或数字
[:word:] 匹配单词字符

实例

  • 统计/etc/init.d/functions文件中每个单词出现的次数并排序
grep -Eo '[[:alnum:]_]+' /etc/init.d/functions | sort | uniq -c | sort -nr
  • 查找两个文件中重复的行
$ cat test1
aa
bb
cc
ddd
eee
$ cat test2
aa
bb
ccc
dd
eee
$ grep -wf test1 test2
aa
bb
eee
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容