grep 命令介绍

grep是一个强大的文本搜索工具命令,用于查找文件中符合指定格式的字符串,支持正则表达式。如不指定任何文件名称,或是文件名为 -,则gerp命令从标准输入设备中读取数据。

grep 家族包括grep egrepfgrep。 egrep 和 fgrep 命令只跟 grep 有很小的不同。 egrep 是 grep 的扩展 , fgrep 就是 fixed grep 或 fast grep,该命令使用任何正则表达式中的元字符表示其自身的字面意义,不在特殊。其中 egrep 就等同于 " grep -E" ,fgrep 等同于"grep -F"。(有点晕。。) Linux中的 grep 功能强大,支持很多参数,可以方便地用来进行文本处理工作。

grep 命令常用参数说明

-a	不要忽略二进制数据
-A 除了显示符合条件的那一行之外,并显示该列之后的内容 -b 在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号
-B 除了显示符合条件的那一行之外,并显示该列之前的内容 -c 计算符合结果的行数
-C 除了显示符合条件的那一行之外,并显示该列之前后的内容 -e 按指定的字符串查找
-E 按指定的字符串指定的正则查找 -f 指定范本文件,其内容含有一个或多范本样式
-F 将范本样式视为固定的字符串列表 -G 将范本样式视为普通的表示法来用 -h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称
-H 在显示符合范本样式的那一列之前,标示该列所属的文件名称 -i 忽略字符大小写 -l 列出文件内容符合指定的范本样式的文件名称
-L 列出文件内容不符合指定的范本央视的文件名称 -n 在显示符合范本样式的那一列之前,标示出该列的列数编号 -q 不显示任何信息 -r 在指定路径中递归查找 -s 不显示错误信息 -v 反向查找
-V 显示版本信息 -w 匹配整个单词 -x 只显示全列符合的列
--help 在线帮助

grep 单独使用时至少有两个参数,如少于两个参数,grep 会一直等待,直到该程序被中断。如果遇到这样的情况,可以使用 Ctrl + c 终止。 默认情况下只搜索当前目录,如果递归查找子目录,可使用-r选项。

grep命令使用方法

在指定的文件中查找字符串:

grep root  /etc/passwd    在 /etc/passwd  中查找 root 字符串

结合管道一起使用:

cat /etc/passwd   | grep root

grep mysql  my.cnf | grep datadir

查找符合条件的内容所在的行号:

grep -n root /etc/passed

在 nginx.conf 中查找包含 listen 的行号并打印出来:

grep listen  nginx.conf

查找指定字符串:

grep uuid  test.txt    区分大小写
grep UUID test.txt 区分大小写 grep -i uuid test.txt 不区分大小写

列出匹配字符串的文件名:

grep -l uuid test.txt

列出不匹配字符串的文件名:

grep -L uuid test.txt

匹配整个单词:

gerp -w UU    test.txt
grep -w UUID test.txt

除了显示匹配的行,分别显示该行上下文的 n 行:

grep -C1 UUID test.txt  此处 n = 1 ,跟在 -C 参数后面

按正则表达式查找指定字符串:

grep -n  -E  "^[a-z]+"   test.txt
grep -n -E "^[^a-z]+" test.txt grep -E "datadir | socket" my.cnf

递归查找:

grep -r var . | head -3

在当前的目录下查找文件中的字符串hello:

grep  -rn   “hello”

grep 正则参数说明

^	指定匹配字符串的行首
$ 指定匹配字符串的结尾
* 表示0个以上的字符
+ 表示1个以上的字符
\ 去掉指定字符的特殊含义 ^ 指定行的开始
$ 指定行的结束
. 匹配一个非换行的字符
* 匹配零个或多个先前字符 [] 匹配一个指定范围内的字符
[^] 匹配一个不在指定范围内的字符 \(..\) 标记匹配字符
< 指定单词的开始
> 指定单词的结束 x{m} 重复字符 x,m 次
x{m}, 重复字符 x, 至少 m 次
x{m,n} 重复字符x, 至少 m 次,不多于 n 次 w 匹配文字和数字字符,也就是 [A-Za-z0-9]
b 单词锁定符 + 匹配一个或多个先前的字符
? 匹配零个或多个先前的字符 a|b|c 匹配 a 或 b 或 c () 分组符号 [:alnum:] 文字数字字符 [:alpha:] 文字字符 [:digit:] 数字字符 [:graph:] 非空格、控制字符 [:lower:] 小写字符 [:cntrl:] 控制字符 [:print:] 非空字符(包括空格) [:punct:] 标点符号 [:space:] 所有空白字符(新行,空格,制表符) [:upper:] 大写字符 [:xdigit:] 十六进制数(0-9,a-f,A-F)

Linux命令(八)过滤文本 grep的更多相关文章

  1. 【转】如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等

    如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等   你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并 ...

  2. Linux命令(1)grep

    开发过程中,与测试运维中 逐渐学习 运维常用的Linux 命令: 转自https://www.cnblogs.com/peida/archive/2012/12/17/2821195.html Lin ...

  3. linux命令之查找find &grep

    区别:find找目录下的文件:find+目录路径+条件表达式,grep找文件中的行:grep+匹配正则表达式+文件名 find命令 find命令的一般形式 find命令的常用选项及实例 find与xa ...

  4. <转>如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等

    原文链接:http://www.vaikan.com/use-multiple-cpu-cores-with-your-linux-commands/ 你是否曾经有过要计算一个非常大的数据(几百GB) ...

  5. 转摘--如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等

    http://www.vaikan.com/use-multiple-cpu-cores-with-your-linux-commands/ 你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或 ...

  6. 如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等(转)

    你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并行的操作.数据专家们,我是在对你们说.你可能有一个4核或更多核的CPU,但我们合适的工具,例如 grep, ...

  7. 【转】Linux命令:ps -ef |grep java

    转自:https://www.cnblogs.com/feizifeiyu/p/8492550.html 一.ps -ef |grep java 查看包含"java"的所有进程 二 ...

  8. Linux命令:ps -ef |grep java

    一.ps -ef |grep java 查看包含"java"的所有进程 二.涉及命令详解 ps命令将某个进程显示出来(是LINUX下最常用的也是非常强大的进程查看命令) grep命 ...

  9. Linux命令(23)grep命令的使用

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

随机推荐

  1. CentOS常用命令备忘

    1. 查看进程 ps -a 杀掉进程 kill PID 2. 添加计划任务crontab -e 例如:30 21 * * * service httpd restart 每天21:30重启apache ...

  2. MP实战系列(十六)之性能分析插件

    性能分析拦截器,用于输出每条 SQL 语句及其执行时间. 虽然使用阿里的Druid连接池可以完成这个目的,但是,我们一般认为,目前的组件能够达到这个目的,尽量使用目前的组件,因为修改配置和引入第三方库 ...

  3. Arthas开源项目

    本文主要围绕着Arthas是什么.能做什么.安装和使用等三个方面内容来讲解,希望对初学者和对此有兴趣的朋友有帮助. 一. Arthas是什么 文档地址: https://alibaba.github. ...

  4. Python2.7-sqlite3

    sqlite3模块,SQLite 是用 C 写的轻量级的数据库,sqlite3 模块提供了对数据库的接口,要使用必须首先创建一个 Connection 对象,代表连接至数据库,然后才能继续操作,操作数 ...

  5. Xcode7如何真机调试

    查阅网上Xcode7如何真机调试,教程我觉得都有点繁琐,然后我自己用3步实现真机测试: 1.左上角Xcode  -->  Perferences  -->  Accounts  --> ...

  6. Eclipse-设置启动JDK版本

    打开eclipse安装目录下的eclipse.ini文件,将红色内容加入 -vm ../Java/jdk1.6.0_26/bin (或者指向具体目录:D:/software/jdk_1.8u91/bi ...

  7. SQL Server 启动时发生错误1069:由于登录失败而无法启动

    解决方法:    (1). 我的电脑--控制面板--管理工具--服务--右键MSSQLSERVER--属性--登陆--登陆身份--选择"本地系统帐户".    (2). 我的电脑- ...

  8. 浅析arm的异常、中断和arm工作模式的联系

    说到异常向量,会让人联想到中断向量.其实,中断是属于异常的子集的,也就是说中断其实是异常其中的一种. 回到异常向量,他其实是一张表格,每个格子里存放的是一个地址,或者是一个跳转命令,不管是哪个,其目的 ...

  9. opengl学习记录1——矩形绘制

    #include <windows.h> #include <gl/GL.h> #include <gl/GLU.h> #include <glut.h> ...

  10. ECMAScript6——Set数据结构

    /** * 数据结构 Set */ // ----------------------------------------------------- /** * 集合的基本概念:集合是由一组无序且唯一 ...