• Linux 三剑客


    作用

    在文件或标准输入中,通过正则表达式查找对应的内容

    语法格式

    grep [选项]... PATTERN [FILE]...

    grep的常用选项参数

    参数选项 描述
    -G 默认值
    -F 相当于使用fgrep,但必须用 -F
    -E 相当于使用egrep,但必须用 -E
    -V 打印 grep 的版本号

    -E 的栗子

    前提

    当 grep 想同时过滤多个条件或操作

    错误写法

    默认不支持多条件匹配

    ps -ef | grep "java|tomcat"

    正确写法

    ps -ef | grep -E "java|tomcat"

    匹配控制选项参数

    参数选项 描述
    -e PATTERN 来进行匹配操作
    -f 从文件中取得 PATTERN
    -i 忽略大小写
    -v 反转匹配,选择没有被匹配到的内容
    -w 匹配整词,精确地单词,单词的两边必须是非字符符号(即不能是字母数字或下划线)
    -x 仅选择与整行完全匹配的匹配项
    --line-buffered 有一个文件是动态的,它不断地添加信息到文件的尾部,而你想要输出包含某些信息的行。即持续的grep一个动态的流

    -e 的栗子

    当你有多个正则表达式想同时匹配时,可以用 -e,一个 -e 接一个正则表达式,它们是或的关系,不是与的关系

    -f 的栗子

    -i 的栗子

    -v 的栗子

    -w 的栗子

    -x 的栗子

    一般输出控制选

    参数选项 描述
    -s 禁止显示错误信息
    -q 安静模式,不会有任何输出内容,查找到匹配内容会返回0,未查找到匹配内容就返回非0
    -m num 匹配 num 次后停止
    -c 匹配成功数量
    -l 列出匹配成功结果的文件来源(标准输入或文件名称)
    -H 给每一个匹配结果打印来源(标准输入、文件名)

    -q

    目前没发现有什么用

    -m 的栗子

    -c 的栗子

    -l 的栗子

    ls 输出的内容就是标准输入

    输出控制参数讲解

    参数选项 描述
    -b 输出的同时打印字节偏移
    -n 输出的同时打印行号
    -H 给每一个匹配结果打印来源(标准输入、文件名)
    -h 输出是不显示来源(默认)
    -o 只显示匹配 PATTERN 的部分

    -b 的栗子

    -n 的栗子

    -H 的栗子

    因为结果都来源于 ls 的标准输入,所以显示标准输入,如果是来源于某个文件则会显示文件名

    -o 的栗子

    上下文线控制选项

    参数选项 描述
    -A num 匹配到搜索到的行以及该行下面的num行
    -B num 匹配到搜索到的行以及该行上面的num行
    -C num 匹配到搜索到的行以及上下各num行

    备注

    感觉就是为了好看而已

    -A 的栗子

    -B 的栗子

    -C 的栗子

    文件和目录选项

    参数选项 描述
    -a 不忽略二进制的数据
    -d 当要查找的是目录而非文件时,必须使用这项参数
    -r 以递归方式读取每个目录下的所有文件; 这相当于-d recurse选项。

    -r 的栗子

    巨常用的语法

    重点

    写的正则表达式最好用 '' 包起来,当碰到需要转义符的时候才会生效

    查找指定进程

    ps -ef | grep java

    查找指定进程并统计数量

    ps -ef | grep -c java

    从文件中查找关键字

    grep src test.txt

    从文件中查找关键字并输出它的行号

    grep -n src test.txt

    从多个文件中查找关键字

    grep src src.txt src1.txt src2.txt

    从文件中查找关键字后,再从结果中找到指定关键字

    cat src.txt | grep -v s | grep -w lib

    找出文件中的空白行

    grep -n ^$ test.txt

    显示当前目录下面以 .txt 结尾的文件中的所有包含每个字符串至少有4个连续小写字符的字符串的行

    grep -n '[a-z]{4}' *.txt
     
  • 相关阅读:
    Linux 修改时区(debain)
    C#生成验证码
    httpPost 请求
    C# Array.FindAll
    C#删除字符串中所有的空字符
    C# 获取汉字区位码
    Qinq Vlan mapping 和DHCP 服务器
    Sql 分页存储过程
    request 之getParameterMap 方法
    如果我是面试官
  • 原文地址:https://www.cnblogs.com/rood/p/14434704.html
Copyright © 2020-2023  润新知