• linux中grep命令


    grep [option] "pattern" 文件名
    grep "root" /etc/passwd 过滤带有root 字符

    正则表达式元字符
    1匹配单个字符的元字符
    . 表示任意单个字符
    [root@localhost ~]# grep "r..t" /etc/passwd
    [abc] 或者
    [root@localhost ~]# grep "r[aA]t" /tmp/1.txt

    - 连续的字符范围
    [a-z] [A-Z] [a-zA-Z] [0-9] [a-zA-Z0-9]

    [root@localhost ~]# grep "r[A-Z]t" /tmp/1.txt
    rAt
    [root@localhost ~]# grep "r[0-9]t" /tmp/1.txt
    r8t
    [root@localhost ~]# grep "r[a-zA-Z0-9]t" /tmp/1.txt
    r8t
    rAt

    ^ 取反
    [^a-z]
    [root@localhost ~]# grep "r[^0-9]t" /tmp/1.txt
    rAt


    特殊字符集:
    [[:punct:]] 任意单个标
    [root@localhost ~]# grep -En "r[[:punct:]]t" /tmp/1.txt
    11:r,t
    12:r?t
    13:r"t"

    [[:space:]]任意单个空白字符
    [root@localhost ~]# grep -En "r[[:space:]]t" /tmp/1.txt
    14:r t


    2 匹配字符出现的位置
    1) ^string 以string 开头
    2)^[rbh] 查找以rbh 开头-----取反 ^[^rbh]
    [root@localhost ~]# grep "^[^rbh]" /etc/passwd

    3) string& 以string 结尾
    [root@localhost ~]# grep "bash&" /etc/passwd
    [root@localhost ~]# grep "nologin&" /etc/passwd | wc -l

    4) ^& 空行
    [root@localhost ~]# grep "^&" /etc/fstab | wc -l

    显示/etc下的目录名
    [root@localhost ~]# ls -l /etc/ | grep "^d"


    3 匹配字符出现的次数

    * 匹配前一个字符出现的任意次 ab*: a ab abb abbb
    [root@localhost ~]# grep "ab*" /tmp/2.txt
    .* 任意字符

    ? 前一个字符最多出现一次 最少出现0次或一次
    * 0 or 多次
    + one or more times.(一次或者多次)
    {n} 字符精确出现几次
    {n,} 最少n次 多了不限
    {,m} 最多m次
    {n,m} 最少n次 做多m次

    ? 0次或者1次 可有可无
    [root@localhost ~]# grep "ab?" /tmp/2.txt

    + 1次或者多次 最少1次
    [root@localhost ~]# grep "ab+" /tmp/2.txt

    {2} 精确匹配2次
    [root@localhost ~]# grep "ab{2}" /tmp/2.txt

    {2,5} 最少2次 最多5次
    [root@localhost ~]# grep "ab{2,5}" /tmp/2.txt

    {2,} 最少2次
    [root@localhost ~]# grep "ab{2,}" /tmp/2.txt

    分组 (ab)+
    [root@localhost ~]# grep "(ab){2,}" /usr/share/dict/words


    option选项:
    1) -i 忽略大小写
    [root@localhost ~]# grep -i "^r" /tmp/1.txt
    2) -o 仅显示符合正则表达式的内容,不再显示整行
    xpl@localhost ~]$ grep -o "r..t" /etc/passwd
    3) -v 反向过滤
    [root@localhost ~]# grep -v "^#" /etc/fstab
    4) -e 根据多个选项过滤文本
    [root@localhost ~]# grep -e "^&" -e "^#" /etc/fstab
    [root@localhost ~]# grep -v -e "^&" -e "^#" /etc/fstab 不显示
    5)-E 支持扩展正则表达式
    [root@localhost ~]# grep -E "(ab){2,}" /usr/share/dict/words

    cpu信息
    [root@localhost ~]# cat /proc/cpuinfo
    [root@localhost ~]# grep -E "vmx|svm" /proc/cpuinfo

    6) -A n 同时显示符合条件的后n行
    [root@localhost ~]# ifconfig eth0 | grep -A 2 "network"
    -B n 同时显示符合条件前n
    [root@localhost ~]# ifconfig eth0 | grep -B 2 "network"

    小胖专属学习分享
  • 相关阅读:
    asp.net core 2.0的认证和授权
    数据库性能优化详解
    StringUtils.defaultIfBlank
    SQL优化(二) 快速计算Distinct Count
    SQL语句中Left join,right join,inner join用法
    sql中的limit关键字
    多线程之间的资源共享
    面试长谈的String,StringBuffer,StringBuilder三兄弟有啥区别
    关于java中的值传递与引用传递遇到的问题
    Struts1和Struts2的区别和对比:
  • 原文地址:https://www.cnblogs.com/xpl520/p/11227732.html
Copyright © 2020-2023  润新知