grep

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

选项

  • -a 不要忽略二进制数据。
  • -A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
  • -b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
  • -c 计算符合范本样式的列数。
  • -C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
  • -d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
  • -e<范本样式> 指定字符串作为查找文件内容的范本样式。
  • -E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
  • -f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
  • -F 将范本样式视为固定字符串的列表。
  • -G 将范本样式视为普通的表示法来使用。
  • -h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
  • -H 在显示符合范本样式的那一列之前,标示该列的文件名称。
  • -i 胡列字符大小写的差别。 -l 列出文件内容符合指定的范本样式的文件名称。
  • -L 列出文件内容不符合指定的范本样式的文件名称。
  • -n 在显示符合范本样式的那一列之前,标示出该列的编号。
  • -q 不显示任何信息。
  • -R/-r 此参数的效果和指定“-d recurse”参数相同。
  • -s 不显示错误信息。
  • -v 反转查找。
  • -w 只显示全字符合的列。
  • -x 只显示全列符合的列。
  • -y 此参数效果跟“-i”相同。
  • -o 只输出文件中匹配到的部分。

用法 

  • 在文件中搜索一个单词,命令会返回一个包含“match_pattern”的文本行:
grep match_pattern file_name 

grep "match_pattern" file_name

  

  • 在多个文件中查找:
grep "match_pattern" file_1 file_2 file_3 ...

  

  • 输出除之外的所有行 -v 选项:
grep -v "match_pattern" file_name
  • 标记匹配颜色 --color=auto 选项:
别名:
    alias grep='grep --color' grep "match_pattern" file_name --color=auto

  

  • 使用正则表达式 -E 选项:
grep -E "[1-9]+"

egrep "[1-9]+"

  

  • 只输出文件中匹配到的部分 -o 选项:
echo this is a test line. | grep -o -E "[a-z]+\." line. 

echo this is a test line. | egrep -o "[a-z]+\." line.

  

  • 统计文件或者文本中包含匹配字符串的行数 -c 选项:
grep -c "text" file_name
  • 输出包含匹配字符串的行数 -n 选项:
grep "text" -n file_name

cat file_name | grep "text" -n #多个文件 grep "text" -n file_1 file_2
  • 打印样式匹配所位于的字符或字节偏移:
echo gun is not unix | grep -b -o "not"
:not #一行中字符串的字符便宜是从该行的第一个字符开始计算,起始值为0。 选项 -b -o 一般总是配合使用。
  • 搜索多个文件并查找匹配文本在哪些文件中:
grep -l "text" file1 file2 file3...

grep递归搜索文件

  • 在多级目录中对文本进行递归搜索:
grep "text" . -r -n #

.表示当前目录。
  • 忽略匹配样式中的字符大小写:
echo "hello world" | grep -i "HELLO"
hello
  • 选项 -e 制动多个匹配样式:
echo this is a text line | grep -e "is" -e "line" -o is line

#也可以使用-f选项来匹配多个样式,在样式文件中逐行写出需要匹配的字符。

cat patfile
aaa
bbb echo aaa bbb ccc ddd eee | grep -f patfile -o
  • 在grep搜索结果中包括或者排除指定文件:
#只在目录中所有的.php和.html文件中递归搜索字符"main()"

grep "main()" . -r --include *.{php,html}

#在搜索结果中排除所有README文件

grep "main()" . -r --exclude "README"

#在搜索结果中排除filelist文件列表里的文件

grep "main()" . -r --exclude-from filelist
  • 使用0值字节后缀的grep与xargs:
#测试文件:

echo "aaa" > file1

echo "bbb" > file2

echo "aaa" > file3

grep "aaa" file* -lZ | xargs - rm

#执行后会删除file1和file3,grep输出用-Z选项来指定以0值字节作为终结符文件名(\),xargs - 读取输入并用0值字节终结符分隔文件名,然后删除匹配文件,-Z通常和-l结合使用。
  • grep静默输出:
grep -q "test" filename

#不会输出任何信息,如果命令运行成功返回0,失败则返回非0值。一般用于条件测试。
  • 打印出匹配文本之前或者之后的行:
#显示匹配某个结果之后的3行,使用 -A 选项:

seq  | grep "" -A 

8

#显示匹配某个结果之前的3行,使用 -B 选项:

seq  | grep "" -B 

#显示匹配某个结果的前三行和后三行,使用 -C 选项:

seq  | grep "" -C 

#如果匹配结果有多个,会用“--”作为各匹配结果之间的分隔符:

echo -e "a\nb\nc\na\nb\nc" | grep a -A
a
b
--
a
b

Linux:grep命令详解的更多相关文章

  1. linux grep命令详解

    linux grep命令详解 简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来 ...

  2. Linux grep命令详解[备份]

    linux grep命令 1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressi ...

  3. linux grep命令详解(转)

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

  4. 【转】linux grep命令详解

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

  5. Linux grep 命令详解

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

  6. linux awk命令详解

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  7. Linux netstat命令详解

    Linux netstat命令详解 一  简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多 ...

  8. 【转发】linux yum命令详解

    linux yum命令详解 yum(全 称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理, ...

  9. linux yum 命令 详解

    linux yum命令详解 yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能 ...

  10. Linux find命令详解

    转自Linux find命令详解 一.find 命令格式 1.find命令的一般形式为: find pathname -options [-print -exec -ok ...] 2.find命令的 ...

随机推荐

  1. 前端学习笔记之Z-index详解

    CSS当中的z-index属性看起来足够简单,但是如果你真的想了解它是如何工作的话,在这简单的表面之下,又有许多值得探究的内容. 在这篇教程中,通过探究层叠上下文和一系列实际的例子,我们将会阐明z-i ...

  2. Could not initialize class sun.awt.X11FontManager 异常问题

    查了很多资料都是建议在  catalina.sh 中增加 -Djava.awt.headless=true \  的配置. 加了没有效果. 后来发现是因为JDK版本问题,将JDK 8换成 JDK 7后 ...

  3. Linux下的Nginx安装

    1 nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境. gcc 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有g ...

  4. ubuntu18.04编译openwrt前的准备

    1.获取openwrt源码 git clone https://github.com/openwrt/openwrt.git 2.安装一些库及必备程序: sudo apt-get install li ...

  5. 编程之美——求1~N的整数中1的个数

    为了依次求个位,十位,百位中1的个数,我们可以把这个数字分为三部分,高位数字,当前位数字,低位数字. 如果当前位为0,那么此位为1的数目与高位数字有关 如果当前位为1,那么此位为1的数目与高位和地位都 ...

  6. springMVC多视图的支持

    1.在springmvc.xml中加上 <!-- 多视图的支持 --> <bean class="org.springframework.web.servlet.view. ...

  7. Sorl初始

    Sorl是什么 ? Solr是Apache下的一个开源项目,使用Java基于Lucene开发的全文检索服务:是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可 ...

  8. “Too many open files” 小记

    pycharm远程链接centos7开发过程中突然遇到“Too many open files”. 几点记录: 1. 命令:ulimit -n 查看系统配置,其中的 表示每个进程最多能打开8192个文 ...

  9. 从git获取项目代码

    1.先复制项目的SSH链接备用 2.在你要放置项目的地方git bash here 3.按照以下步骤走: $ git clone YourSSHAddress // clone项目 $ ls // 查 ...

  10. C# WebSocket解析(收发数据包、分片超长包处理)

    using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptograph ...