Unix/Linux 中的 grep 命令参数及示例用法

  • 作用
  • 语法
  • 主要参数
  • 示例命令

作用

Grep 筛选器在文件中搜索特定的字符模式,并显示包含该模式的所有行。在文件中搜索的模式称为 正则表达式. (grep 代表正则表达式的全局搜索和打印输出)。

语法

grep -options(参数) pattern(关键词) files(文本文件)

主要参数

-c :只输出匹配模式的行数
-h :只显示匹配的行,不显示文件名。
-i忽略匹配时的大小写。
-l :只显示文件名列表。
-n :显示匹配的行及其行号
-r :显示文件所在目录即路径。
-v :输出所有不匹配的行。
-e exp : 指定该选项的表达式,可以多次使用。
-f file :指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-E :将样式为延伸的正则表达式来使用。
-w :匹配整个单词。
-r :明确要求搜索子目录。
-d skip :忽略子目录。
-o :只打印匹配行的匹配部分,每个这样的部分在单独的输出行上。
\ :忽略正则表达式中特殊字符的原有含义。
[ ]:单个字符,如[A]即A符合要求。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求。
.:所有的单个字符。
*:所有字符,长度可以为0。

-A n : 除了显示符合范本样式的那一行之外,并显示该行之后n
-B n : 除了显示符合范本样式的那一行之外,并显示该行之前n
-C n : 除了显示符合范本样式的那一行之外,并显示该行之前以及之后n

示例命令

  1. 考虑下面的文件作为输入,键入cat > geekfile.txt 后回车;
$ cat > geekfile.txt
  1. 输入如下内容并键入回车;
unix is great os. unix is opensource. unix is free os.
learn operating system.
Linux is a family of open-source Unix-like operating systems based on the Linux kernel.
Unix linux which one you choose.
uNix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.
  1. 在键盘上按下Ctrl+D (或者键入Control-D),保存文本并回到shell提示符。

1、 -i 忽略匹配时的大小写:选项允许在被检索文件中不敏感地搜索字符串大小写。它匹配“UNIX”、“Unix”、“unix”等单词。

$ grep -i "UNix" geekfile.txt

输出:

2、-c只输出匹配模式的行数: 我们可以找到与给定字符串模式匹配的行数。

$ grep -c "unix" geekfile.txt

输出:

3、-l显示与模式匹配的文件名: 我们可以只显示包含给定字符串模式的文件。

$ grep -l "unix" *
or
$ grep -l "unix" geekfile.txt f1.txt f2.txt f3.txt

输出:


4、-w匹配文件中的整个单词: 默认情况下,grep 匹配给定的字符串/模式,即使它在文件中作为子字符串出现。Grep 的-w选项使它只匹配整个单词。

$ grep -w "unix" geekfile.txt

输出:

5、-o只打印匹配行的匹配部分: 默认情况下,grep 显示具有匹配字符串的整个行。我们可以使用-o 选项使 grep 只显示匹配的字符串。

$ grep -o "unix" geekfile.txt

输出:

6、grep -n 输出时显示行号: 显示匹配行的文件及行号。

$ grep -n "unix" geekfile.txt

输出:

7、-v 反转模式匹配: 可以使用-v 选项显示与指定搜索模式不匹配的行。

$ grep -v "unix" geekfile.txt

输出:

8、^ 匹配以字符串开头的行: ^ 正则表达式模式指定行的开头。可以在 grep 中使用它来匹配以给定字符串或模式开头的行。

$ grep "^unix" geekfile.txt

输出:

9、$匹配以字符串结尾的行: $正则表达式模式指定行的结尾。可以在 grep 中使用它来匹配以给定字符串或模式结尾的行。

$ grep "os.$" geekfile.txt

输出:

10、-e 指定该选项的表达式,可以多次使用:

$ grep –e "unix" –e "linux" –e "open-source" geekfile.txt

输出:

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

$ cat > pattern.txt
Agarwal
Aggarwal
Agrawal
$ grep –f pattern.txt  geekfile.txt
$ grep -f pattern.txt  geekfile.txt noSuchFile.txt

输出:

12、从一个文件中打印 n 行: -A结果后 打印搜索行和 n 行, -B结果前 打印搜索行和 n 行, -C结果前后 打印搜索行和 n 行。

  1. 语法:
$ grep -A[NumberOfLines(n)] [search] [file]
$ grep -B[NumberOfLines(n)] [search] [file]
$ grep -C[NumberOfLines(n)] [search] [file]
  1. 例子:
$ grep -A1 learn geekfile.txt
  1. 输出:

13、-r 查找文件所在 目录 即路径:

$ grep –r "linux" ./

输出:

Unix/Linux 中的 grep 命令相关推荐

  1. linux使用grep查找文件内容,Linux中使用grep命令搜索文件名及文件内容的方法

    这篇文章主要介绍了Linux中使用grep命令搜索文件名及文件内容的方法,同时文中还介绍了将匹配结果高亮显示的方法,相当实用,需要的朋友可以参考下 从文件中搜索并显示文件名 当从多个文件中搜索时,默认 ...

  2. Linux中利用grep命令如何检索文件内容详解

    前言 Linux系统中搜索.查找文件中的内容,一般最常用的是grep命令,另外还有egrep命令,同时vi命令也支持文件内容检索.下面来一起看看Linux利用grep命令检索文件内容的详细介绍. 方法 ...

  3. linux中的grep命令用法

    1.grep的作用 grep命令是用来查找指定字符串,文件中的行的位置,也可以利用管道符(|)从其他命令中获取执行结果,作为输入,获取指定字符串的位置. 指定参数 参数名 作用 -A 行数 在显示范本 ...

  4. Linux 中的grep命令单引号,不加任何参数以及双引号的作用

    单引号: 可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么.单引号''是全引用,被单引号括起的内容不管是常量还是变量者不会发生替换. 双引号: 把双引号内的 ...

  5. unix grep命令_Linux / UNIX中的Grep命令

    unix grep命令 In Linux and Unix Systems Grep, short for "global regular expression print", i ...

  6. linux中的grep和egrep命令,Linux grep和egrep命令

    在Linux中,grep是一个非常强大的文本搜索工具,它可以根据用户指定的文本搜索模式对目标文件进行逐行的搜索,然后将被模式匹配到的用户所需要的信息显示出来:那么,egrep呢?从字母组合上看,二者很 ...

  7. 【Linux/Unix】Linux中的seq命令

    1 简介 Linux中的seq命令可以用来生成指定范围内.指定间隔的数字列表,常用在while.for和until等循环中. 2 语法及使用示例 2.1 语法 seq通常有三种语法形式: (1) se ...

  8. Unix/Linux 中的 shell 机制

    Unix/Linux 中的 shell 机制 对于初次接触 Unix/Linux 系统的同学来说,Unix/Linux 系统与 Windows 系统最大的不同就是,操作 Unix/Linux 系统更多 ...

  9. linux cut命令学习,Linux中的cut 命令详解

    今天小编要跟大家分享的文章是关于Linux中的cut 命令详解.cut 命令在Linux和Unix中的作用是从文件中的每一行中截取出一些部分,并输出到标准输出中.我们可以使用 cut 命令从一行字符串 ...

最新文章

  1. Halcon:(2)电路板检测实验
  2. java源码推荐_基于java的推荐系统实现源代码
  3. hadoop-hdfs-ha配置-搭建
  4. php yii框架源码,yii 源码解读
  5. 文件重命名批量处理(Matlab)
  6. 基准测试 ApacheBench ab学习
  7. debian10树莓派4安装mysql_树莓派 4 发布!新 OS 基于 Debian 10 Buster
  8. python django mysql结果获取_Django中从mysql数据库中获取数据传到echarts方式
  9. mysql索引和事务_MySQL事务和索引
  10. Js整理工具-开发必备
  11. Atitit 价值观与理念总结 Diy自力更生尽可能 提高独立性 减少依赖 大而全优先于小而美 适度分权防止集权导致大决策失误 方式多种多样 综合是王道 简单快速优先 努力实现人们喜闻乐见的服务 信
  12. python语法基础汇总
  13. 《秘密》· 东野圭吾
  14. ubuntu18.04两台电脑ntp时间同步
  15. 曹国伟:微博客将改变媒体发展形态
  16. Tecohoo VD-306S 全高清视频会议摄像机
  17. 常用的协议端口号(TCP and UDP)
  18. 10.Java面向对象进阶2
  19. Swift 替换字符串
  20. 世界杯营销战,中国企业赢麻了

热门文章

  1. 【如何用C++编程制作一个简单的游戏引擎】
  2. 深富策略:盐湖提锂+钴金属 引领市场走强
  3. 连续性微分方程详细推导过程
  4. 六部门发布38条举措支持民企改革发展转型升级
  5. web3j的基础用法-6合约的监听器事件Event和过滤器EthFilter,以及NullPointed,调用失败导致的bug解决
  6. 【无人机摄影测量技术】倾斜摄影测量外业控制点布设的方法
  7. html5手机浏览器后退刷新页面,浏览器收到什么样的response就会刷新页面?
  8. H265码流RTP封装方式详解
  9. 取6位有效数字c语言,float,double 的范围和有效数字怎么算出来的?
  10. qemu虚拟机ping不通网关