`
足至迹留
  • 浏览: 494788 次
  • 性别: Icon_minigender_1
  • 来自: OnePiece
社区版块
存档分类
最新评论

<linux- grep> grep基本用法

阅读更多
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。大多数grep版本是NFA规则引擎,与java一样。

1. 语法
grep [options] pattern [fileName...]
或
grep [options] [-e pattern | -f fileName] [fileName...]

一般使用第一种写法。

支持的常用options如下:
1.1 控制匹配pattern
-i, (全称: --ignore-case) : 正则内容忽略大小写。以行为单位显示,即使一行匹配到多个pattern也是一行显示

-v, (--ivert-match): 反检索,只显示不匹配的行,以行为单位显示。
-w, (--word-regexp): 把pattern当做‘单词’精确匹配。比如匹配'is',那么'this'就不会被匹配到。
-x, (--line-regexp): 显示与指定模式精确匹配而不含其他字符的行。比如匹配'error'则只匹配单独一行的'error',如果该行除了error之外还有其他字符则不算匹配。

1.2 控制匹配结果的输出pattern
-c, (--count): 之前的pattern默认输出结果都是以原始文本的行为单位显示。这里就不显示行内容,只显示匹配到的行数。
-m NUM, (--max-count=NUM):当匹配到的行数到达NUM行后,就终止匹配。如: grep -m 1 'error' software.test
-o, (--only-matching): 之前正常匹配到的行会把行内容全部输出,即使一行有多个匹配也是在一行内输出。这里(1)只输出一行中匹配到的部分(2)如果匹配到多个部分则换行输出。 这一点很适合统计文件中某个单词之类的出现频率。

-n, (--line-number): 在匹配到的结果前面输出该行在原始文件中的行号。

-A NUM, (--after-context=NUM): 输出正常匹配结果外,再输出匹配行后NUM行,查看上下文。
-B NUM, (--before-context=NUM):输出正常匹配结果外,再输出匹配行前NUM行,查看上下文。

1.3 文件源控制
-r, (--recursive): 前面都是在一个指定文件名的文件中搜索,如果想搜索目录,则要指定-r或-R,或-d
递归的搜索该文件夹中的目录,处理目录中的每个文件.等价于-d recurse。
-R, (--dereference-recursive):也是递归搜索目录下的子文件。与-r不完全一样,主要是在处理symbolic links时候的差别,准确差别个人还没有确定。-r与-R在不同shell下也不一样,可以参考http://unix.stackexchange.com/questions/154599/the-difference-between-r-and-r

-l, (--files-with-matches):   禁止通常的输出;作为替代,打印出每个在通常情况下会产生输出的输入文件的名字。对每个文件的扫描在遇到第一个匹配的时候就会停止。
-L, (--files-without-match):   禁止通常的输出;作为替代,打印出每个在通常情况下不会产生输出的输入文件的名字。对每个文件的扫描在遇到第一个匹配的时候就会停止。

2.补充说明
2.1 单引号和双引号
1)在grep命令中输入字符串参数时,最好将其用双引号括起来。例如:“my strings”,这样做有两个原因,一个是防止被误会是shell命令,一个是可以用来查找多个单词组成的字符串,就如这个例子中的“my strings”。
2)在调用变量的时候,也应该使用双引号,例如:grep “$MYNAME”。此时如果使用单引号,则会把${var}当做字面本身,而不会解析var变量的值。
3)在调用模式匹配(正则表达式)时,应该使用单引号

2.2 递归查询
要想递归查询所有test结尾的文件夹及其子文件夹可以使用:
grep -ir "error" *test 

但如果是想查询所有".log"结尾的文件就不能使用
grep -i "error" *.log
这样会报错:*.log: No such file or directory。
因为grep默认查询单个文件,不能递归。只有文件夹才可以递归,所以会匹配通配符。要想达到这个目的,可以使用:
find /destDir -name "*.log" | grep -i "error"


2.3 统计单词出现次数
1)如果只是匹配某个字符串出现的频率
grep -o "error" error.log | wc -w 或 grep -o "error" error.log | wc -l


2)如果是匹配某个"单词"出现的频率
grep -wo "error" error.log | wc -w 或 grep -o "error" error.log | wc -l

这样的话类似"errorLevel"就不会被匹配出来。

参考:
man grep
http://zhumeng8337797.blog.163.com/blog/static/1007689142011350151438/
http://blog.csdn.net/yongan1006/article/details/8134401
0
0
分享到:
评论

相关推荐

    基于tomcat的jenkins搭建自动化build环境

    &lt;param-value&gt;false&lt;/param-value&gt; &lt;!-- 将false改为true --&gt; &lt;/init-param&gt; &lt;load-on-startup&gt;1&lt;/load-on-startup&gt; &lt;/servlet&gt; ``` - 重启Tomcat服务使配置生效。 - 将下载好的Gradle包放入之前创建的文件夹...

    git命令 总结

    本文将对Git的一些常用命令进行总结,帮助开发者更好地理解和掌握Git的使用方法。 #### 1. Git基础命令 - **初始化仓库** - `git init`: 在当前目录下初始化一个新的Git仓库。 - `git clone &lt;repository-url&gt;`: ...

    linux-grep-命令-详解.zip

    这个压缩包“linux-grep-命令-详解.zip”包含了一份详细文档“linux-grep-基本用法及高级技巧.doc”,将深入解析grep命令的各个方面。下面,我们将根据文档内容,对grep命令进行详细介绍。 grep,顾名思义,“g/re/...

    windows-cmd-linux-grep等命令扩充

    总结来说,通过安装和配置Cygwin、MSYS2或Git for Windows,Windows用户可以在CMD中享受到与Linux相似的命令行体验,包括使用强大的“grep”命令进行文本搜索。这样的扩充对于那些习惯于Linux命令行或者需要在不同...

    Linux中grep命令参数及用法详解---linux管道命令grep

    ### Linux中的`grep`命令参数及用法详解 `grep`是Linux系统中非常重要的文本搜索工具之一,它能够帮助用户高效地查找文件中的特定模式或字符串。...希望这篇详解能帮助读者更好地理解和掌握`grep`命令的使用方法。

    linux包管理

    - 查询已安装的软件包:`dpkg -l`可以列出所有已安装的软件包,`dpkg -l | grep &lt;pattern&gt;`可用于搜索特定的软件包。 - 查看软件包安装的文件列表:`dpkg -L &lt;package-name&gt;`。 2. **apt-get**: - `apt-get`是...

    Ubuntu中文命令

    `ps aux | grep &lt;process-name&gt; | awk '{print $4}'`可以统计特定程序的内存使用量。 **9. 按内存从大到小排列进程** `ps aux | sort -nrk4`可以按内存使用量降序排列进程。 **10. 按cpu利用率从大到小排列进程*...

    Linux系统 grep命令用法详解.doc

    - `-C&lt;显示行数&gt;` 或 `--context=&lt;显示行数&gt;` 或 `-&lt;显示行数&gt;`: 同时显示匹配行前后的指定行数。 - `-d &lt;动作&gt;` 或 `--directories=&lt;动作&gt;`: 指定如何处理目录,如`read`(递归搜索)或`skip`(跳过)。 - `-e...

    Linux教程-linux-文本处理-grep.docx

    grep 命令的使用方法有多种,例如: * grep root /etc/passwd:在 /etc/passwd 文件中搜索包含 "root" 的行 * grep "USER" /etc/passwd:在 /etc/passwd 文件中搜索包含 "USER" 的行 * grep 'USER' /etc/passwd:在...

    aapt-linux.zip

    使用`aapt dump badging aapt-linux.apk | grep version`,提取版本号和代码。 3. 分析权限: 运行`aapt dump permissions aapt-linux.apk`,查看应用需要哪些敏感权限。 4. 深入资源: 用`aapt list aapt-linux....

    linuxgrep命令.pdf

    1. grep命令的结构和基本用法 grep的基本语法是:grep [options] pattern [files]。其中options是选项,pattern是要搜索的模式,files是要在其中搜索的文件列表。如果省略文件名,则从标准输入读取。 2. grep的常见...

    XenServer在删除VM后存储空间不能释放.doc

    3. 执行`lvscan | grep &lt;vdi-uuid&gt;`来检查Linux底层的逻辑卷管理器(LVM)卷是否已被删除。如果LVM卷仍然存在,这可能是导致空间无法释放的原因。 如描述中所述,即使在前两步中看似一切正常,如果在第三步中LVM卷...

    前端开源库-fs-grep

    ### 使用方法 使用`fs-grep`时,首先需要将其引入到项目中,可以使用npm进行安装: ```bash npm install fs-grep ``` 然后在JavaScript代码中导入并使用: ```javascript const fsGrep = require('fs-grep'); /...

    MyCat安装配置及分库分表实验.docx

    - **rule.xml**:分片配置,定义分片规则列表和使用方法。 - **server.xml**:MyCat服务配置,涉及MyCat软件自身的配置。 **schema.xml配置** schema.xml是MyCat的核心配置文件,示例配置如下: ```xml &lt;mycat:...

    linux-shell脚本命令:grep命令简介

    grep命令是Linux系统中非常重要的文本搜索工具,它可以对文件中的内容进行搜索,并根据用户的搜索模式,显示出包含该模式的行。grep是Global Regular Expression Print的缩写,它支持POSIX基本正则表达式和扩展正则...

    linux 32位的jdk8,版本:jdk-8u221-linux-i586.rpm

    安装方法:用root安装,可在别的用户下使用:使用rpm -qa | grep java来查找是否已经安装java包 上图看出有java包存在,使用 rpm -e --nodeps 命令来进行删除 (--nodeps的作用是不检查依赖,直接删除包) 使用ftp...

    linux ps 命令详解

    ### `ps`命令的基本用法 基本的`ps`命令不带任何参数时,会显示当前终端下的进程信息。例如: ```bash ps ``` ### 常见选项 1. `-a`:显示所有用户的所有进程。 2. `-u` `&lt;username&gt;`:显示指定用户的进程。 3. ...

Global site tag (gtag.js) - Google Analytics