• Linux命令详解(10)-grep命令


    grep命令非常强大。它可以帮助用户在庞大的数据流或文件中匹配条件并输出相关行

    --help选项获得帮助信息。

    grep指令如果发现某文件的内容符合所指定的模板样式,默认grep指令会把含有模板样式的那行显示出来。若不指定任何文件名,或者给与的文件名为“-”,则grep紫惠玲会从标准输入设备读取数据。 

    相关命令:egrep,fgrep,rgrep

    选项选项说明
    -A输出包含匹配到的行之后的若干行数据(A选项后需要跟数字,代表多少行)
    -a不要忽略二进制的数据,如果grep找到符合模板样式的内容,但该文件的数据是二进制格式,使用本参数可强制显示内容。否则会只通知有符合条件内容,但不显示内容。
    -B输出包含匹配到的行之前的若干行数据(B选项后需要跟数字,代表多少行)
    -b在显示符合模板样式的那一行之前,标示处改行第一个字符的位编号。编码数从文件的第一字符算起,亦即每个文件的第一个字符,其位编号为1.
    -C输出包含匹配到的行之前和之后的若干行数据(C选项后需要跟数字,代表多少行)
    -c计算符合模板样式的行数,使用本参数将不显示符合条件的行的内容,而会显示每个文件里共有几行符合模板样式。
    -d当指定要查找的是目录而非文件,必须使用这个选项参数。-d选项有三个动作可以设置:read、recurse和skip。默认值是read,表示grep指令会把目录视同一般文件搜索字串。recurse是递归处理,表示该目录下的所有文件及子目录一并处理。skip则是略过该目录不处理。
    -E相当于执行egrep,将模板样式视为眼神的普同表示法来使用
    -e指定字符串作为需找文件内容的模板样式。这和直接指定模板并无不同,但对于以“-”符号为首的字符串,可以有效避免和参数混淆,避免导致grep指令发生错误
    -f指定模板文件,其内涵有一个或多个模板样式,让grep查找符合模板条件的文件内容,格式为每行一个模板样式。一个空的模板文件等于没有指定模板样式。
    -F相当于执行fgrep。将模板样式视为固定字符串的列表,两两之间以新增行控制字符分割,任何一个字符串符合条件即可。
    -G将模板样式视为普通的表示发来使用。此为默认值。
    -h在显示符合模板样式的那一行之前,不标示所属的文件名。
    -H在显示符合模板样式的那一行之前,标示所属的文件名,此为默认值。
    -i忽略大小写差别,包括模板养殖和指定要查找的文件名。
    -l列出文件内容符合指定的模板样式的文件名。
    -L列出文件内容不符合指定的模板样式的文件名。
    -n在显示符合模板样式的那一行之前,标示出改行的行数编号。
    -q不显示任何信息。
    -r与-d recurse 效果相同
    -s不显示错误信息。
    -V输出版本号
    -v反向查找,输出结果排除符合本选项的内容
    -w只显示全词符合的行。如样式模板设置为“email”,使用本选项参数后,内容“email”符合条件,但“myemail”不符合条件。
    -x只显示全行符合的行。
    -y与-i选项相同。

     例1:所搜/etc/ssh/sshd_config文件中包含“rh”的行

    grep "rh" /etc/ssh/sshd_config

    例2:所搜/etc/ssh/sshd_config文件中包含“rh”的行,并输出符合条件内容的前后两行

     如图,使用-C选项,对比输出结果,-C选项输出内容多2行。

    例3:使用-v反向查找,过滤掉exit字符串

    grep "rh" /etc/ssh/sshd_config |grep -v exit

     如图使用了-v选项,可以看到含有exit的行被过滤了。

    例4:在当前目录下,对所有后缀为txt的文件搜索set字符串

    grep seti *.txt

    例5:在当前目录下,包含子目录,对所有后缀为txt的文件搜索set字符串

    grep -i seti *.txt

    或:

    grep -d recurse  seti *.txt

    例6:精准匹配单词world

    grep -w world *.txt

    例7:使用模板文件进行搜索

    模板文件mypartern包含两行内容如下:

    alpha

    beta

    使用该文件进行匹配,将会获得符合这两个字串的行。

    grep -f mypartern *.txt

    例8:匹配完整行为“hello world!”的行

    grep -x "hello world!" *.txt 

    例9:统计alpha出现的次数

    grep -c alpha *.txt

    例10:寻找不包含“alpha”的文件,只列出文件名

    grep -L alpha *.txt

  • 相关阅读:
    jquery获取url参数
    Django viewsets 视图集与 router 路由实现评论接口开发
    Fiddler(一)安装
    git删除分支命令
    java面试题整理
    差分数组入门
    web手势库Alloyfinger
    【高等数学基础进阶】不定积分-part1
    redis的五种数据类型
    服务端优化-连接性能,io模型,web容器
  • 原文地址:https://blog.csdn.net/bigwood99/article/details/125584538