• shell语法 06-Linux文本处理-grep


    • grep命令在一个或多个文件中查找某个字符模式。
    • 如果这个模式中包含空格,就必须用引号把它括起来。
    grep Tom /etc/passwd
    
    • grep 将在文件中查找/etc/passwd 中查找模式 Tom。
    • 结果如下:
      • 查找成功,文件中相应行会显在屏幕上
      • 没有找到指定的模式,就不会有任何输出
      • 指定的文件不是一个合法的文件,屏幕上就会显示报错信息
      • 发现了要查找的模式, grep 就返回退出状态 0,表示成功,
      • 没找到要查找的模式,返回的退出状态为 1,
      • 找不到指定文件时,退出状态将是 2。
    ps -ef | grep root
    
    • ps 命令的输出被送到 grep,然后所有包含 root 的行都被打印在屏幕上。

    grep选项

    选 项 功 能
    -E 如果加这个选项,那么后面的匹配模式就是扩展的正则表达式,也就是 grep -E = egrep
    -i 比较字符时忽略大小写区别
    -w 把表达式作为词来查找, 相当于正则中的"<...>"(...表示你自定义的规则)
    -x 被匹配到的内容,正好是整个行,相当于正则"^...$"
    -v 取反,也就是输出我们定义模式相反的内容
    -c count.统计,统计匹配结果的行数,主要不是匹配结果的次数,是行数。
    -m 只匹配规定的行数,之后的内容就不在匹配了
    -n 在输出的结果里显示行号,这里要清楚的是这里所谓的行号是该行内容在原文件中的行号,而不是在输出结果中行号
    -o 只显示匹配内容, grep 默认是显示满足匹配条件的一行,加上这个参数就只显示匹配结果,比如我们要匹配一个 ip 地址,就只需要结果,而不需要该行的内容。
    -R 递归匹配。如果要在一个目录中多个文件或目录匹配内容,则需要这个参数
    -B 输出满足条件行的前几行,比如 grep -B 3 "aa" file 表示在 file 中输出有 aa 的行,同时还要输出 aa 的前 3 行
    -A 这个与-B 类似,输出满足条件行的后几行
    -C 这个相当于同时用-B -A,也就是前后都输出

    例子

    显示包含#的行,并在前面添加行数
     grep -n '#' /etc/ssh/sshd_config
    
    显示包含#的行,并关闭大小写敏感性
    grep -i '#' /etc/ssh/sshd_config
    
    显示sshd配置文件,排除空行和以#号开头的
    cat /etc/ssh/sshd_config |grep -v '^$' |grep -v '^#'
    
    显示包含s内容的所有文件名
    grep -l 's' /etc/ssh/*
    
    统计包含有#的行数
    grep -c '#' /etc/ssh/sshd_config
    
    只显示包含Port词的行
     grep -w 'Port' /etc/ssh/sshd_config
    
  • 相关阅读:
    Javascript MVC学习杂记3
    Backbone.js 0.9.2 源码分析收藏
    Javascript MVC学习杂记2
    Javascript MVC学习杂记1
    C语言string.h中常用字符函数介绍
    10点网页设计要注意的细节
    js日期函数
    结合回调函数介绍下泛型函数
    【转载】互斥量和信号量的区别
    设计模式之Singleton
  • 原文地址:https://www.cnblogs.com/liangjingfu/p/9419455.html
Copyright © 2020-2023  润新知