grep命令

本文详细介绍了Linuxgrep命令的语法、选项、参数以及各种模式的使用,包括基本正则表达式、扩展正则表达式、搜索字符串、文件处理和输出控制等,并提供了实用的示例和选项解释。
摘要由CSDN通过智能技术生成

Linux Grep 命令高级用法实例  https://www.cnblogs.com/liulianzhen99/articles/17640357.html

深入浅出:掌握Linux grep命令  https://baijiahao.baidu.com/s?id=1763984183183089036

GREP  https://baike.baidu.com/item/GREP/5997841?fr=ge_ala

======================================

grep命令

grep,全称是global regular expressions print

功能就是查找匹配模式的行

grep对文本内容的处理是以行为单位,输出也是输出匹配的行。

也可以使用两个变种程序egrep和fgrep。

egrep与grep -E相同。
fgrep与grep -F相同。

一、语法格式

grep [选项]… 模式 [文件]…
例如:grep -i ‘hello world’ menu.h main.c

二、选项

应用于模式的选项

    -E, --extended-regexp     <模式> 是扩展正则表达式
    -F, --fixed-strings       <模式> 是字符串
    -G, --basic-regexp        <模式> 是基本正则表达式
    -P, --perl-regexp         <模式> 是 Perl 正则表达式
    -e, --regexp=<模式>       用指定的<模式>字符串来进行匹配操作
    -f, --file=<文件>         从给定<文件>中取得<模式>
    -i, --ignore-case         在模式和数据中忽略大小写
        --no-ignore-case      不要忽略大小写(默认)
    -w, --word-regexp         强制<模式>仅完全匹配字词
    -x, --line-regexp         强制<模式>仅完全匹配整行
    -z, --null-data           数据行以一个 0 字节结束,而非换行符

输出控制:

    -m, --max-count=<次数>    得到给定<次数>次匹配后停止
    -b, --byte-offset         输出的同时打印字节偏移
    -n, --line-number         输出的同时打印行号
        --line-buffered       每行输出后刷新输出缓冲区
    -H, --with-filename       为输出行打印文件名
    -h, --no-filename         输出时不显示文件名前缀
        --label=<标签>        将给定<标签>作为标准输入文件名前缀
    -o, --only-matching       只显示行中非空匹配部分
    -q, --quiet, --silent     不显示所有常规输出
        --binary-files=TYPE   设定二进制文件的 TYPE(类型);
                              TYPE可以是'binary'、'text'、'without-match'
    -a, --text                等同于 --binary-files=text
    -I                        等同于 --binary-files=without-match
    -d, --directories=ACTION  读取目录的方式;
                              ACTION 可以是`read', `recurse',或`skip'
    -D, --devices=ACTION      读取设备、先入先出队列、套接字的方式;
                              ACTION 可以是`read'或`skip'
    -r, --recursive           等同于--directories=recurse
    -R, --dereference-recursive       同上,但遍历所有符号链接
        --include=GLOB        只查找匹配 GLOB(文件模式)的文件
        --exclude=GLOB        跳过匹配 GLOB 的文件
        --exclude-from=FILE   跳过所有匹配给定文件内容中任意模式的文件
        --exclude-dir=GLOB    跳过所有匹配 GLOB 的目录
    -L, --files-without-match  只打印没有匹配上的<文件>的名称
    -l, --files-with-matches  只打印有匹配的<文件>的名称
    -c, --count               只打印每个<文件>中的匹配行数目
    -T, --initial-tab         行首制表符对齐(如有必要)
    -Z, --null                在<文件>名最后打印空字符

三、参数

1.模式字符串:要查找的字符串。
可以包括多个模式字符串,使用换行符分隔。
为了避免shell先对特殊字符进行处理,一般要用单引号把模式字符串括起来。
2.文件名

四、示例

1.-F选项原样字符串搜索

    grep -F 'hello world' test.txt
    搜索test.txt文件中,包含'hello world'的行

2.-e选项通过正则表达式搜索
关于正则表达式参考正则表达式
如果不指定选项,默认就是此选项。
-e使用的正则表达式是基本正则表达式。也就是说,像?+{}这些都要在前面加转义符\

    grep -e 't[ae]st' test.txt
    在test.txt中查找包含tast或test的行
     
    grep '[^a-z]oo' test.txt
    在test.txt中查找包含Xoo的行,其中X是一个非a到z的字符
     
    grep '^the' test.txt
    在test.txt中查找以the开头的行
     
    grep '^$' test.txt
    在test.txt中查找空行
     
    cat test.txt | grep '^[^u]'
    输出非u开头的行
     
    grep '<[^>]*>' test.txt
    匹配一对括号
     
    grep '.+' test.txt
    匹配任意字符后面跟一个+
     
    grep '.\+' test.txt
    匹配长度大于0的行

3.-E选项通过扩展正则表达式搜索
正则表达式分为基本正则表达式和扩展正则表达式,但是grep默认只支持基本正则表达式,如果要用扩展正则表达式,需要使用grep -E或者egrep。

    egrep '.+' test.txt
    匹配长度大于0的行
     
    egrep 'gd|good' test.txt
    在test.txt中查找包含gd或good的行
     
    egrep 'g(la|oo)d' test.txt
    在test.txt中查找包含glad或good的行
     
    egrep 'A(xyz)+C' test.txt
    在test.txt中查找包含AXC的行,其中X是一个或一个以上的'xyz'字符串
     
    egrep 'o{2}' test.txt
    在test.txt中查找包含连续两个o的行
     
    egrep '[a-z]{7}' *.txt
    在当前目录下所有.txt文件中查找包含连续7个小写字母的字符串的行
     
    ip address | grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}'
    查找包含ip地址的行
     
    ip address | grep -E '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}'
    查找包含ip地址的行

4.-c选项只输出行数

    grep -c 'CLERK' emp.data
    输出包含CLERK的行的数量

5.-f选项从文件中读取模式

    cat test.txt | grep -f test2.txt
    输出test.txt文件中含有从test2.txt文件中模式的行

6.-n选项显示行号

grep -n 'linux' test.txt

7.-v选项查找不包含模式的行

    grep -v 'abc' test.txt
    在test.txt中查找不包含abc的行

8.-o选项只显示匹配的部分,而不是整行

grep -o 'linux' test.txt

9.-I(大写的i)选项不查找二进制文件

find . -type f -print0 | xargs -0 grep -I 'xxx'

10.-P使用perl正则表达式

grep -P 'start(?= test)' xx.txt

查找必须在' test'紧前面的start
————————————————
                        
原文链接:https://blog.csdn.net/inxunxun/article/details/128167642

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值