zoukankan      html  css  js  c++  java
  • Linux常用命令 | grep

     
    作者简介
    李先生(Lemon),高级运维工程师(自称),SRE专家(目标),梦想在35岁买一辆保时捷。喜欢钻研底层技术,认为底层基础才是王道。一切新技术都离不开操作系统(CPU、内存、磁盘)、网络等。坚持输入输出,记录自己学习的点滴,在平凡中坚持前行,总有一天会遇见不一样的自己。公众号:运维汪(ID:Leeeee_Li)。

    一、前言

    自己平时比较喜欢记笔记,工作四五年,笔记上千篇。最近离职了,加上职场瓶颈,准备好好复盘和整理一下相关的笔记、梳理一下知识点,可能后面有一系列的博文输出,从基础到进阶。
     
     
     

    二、什么是Grep

    Global Regular Expression Print 全局正则表达式
     
    Grep是一个Linux / Unix命令行工具,用于在指定的文件中搜索字符串。文本搜索模式被称为正则表达式。当它找到匹配项时,它将输出带有结果的行。在搜索大型日志文件时,grep命令非常方便。
     
    语法:
    grep [options] pattern [files]
     

    三、常用参数

    -c: 只输出匹配行的数目

    -h: 打印出匹配的行,但是不显示其文件名

    -i: 不区分大小写

    -l: 查询多文件的时候只输出包含匹配字符的文件名

    -n: 打印匹配行以及行号

    -v: 反向匹配,即显示不匹配的行

    -w: 匹配整个单词,而不是整个字符串

    -b: 显示匹配的位置

    -o: 只显示匹配的字串

    -s: 不显示错误信息

    -e exp:匹配多个

    -E:使用正则匹配

     

    四、实例

    1:匹配项标记颜色

    echo “This is a word 
     heihei” |grep word --color=auto

    2:把/etc/passwd包含root的取出来

    grep root /etc/passwd      or     cat /etc/passwd |grep root 
    3:把/etc/passwd不包含root的取出来
    grep -v root /etc/passwd  or     cat /etc/passwd |grep -v root
    4:demsg输出的信息中找出含eth的行,并且输出行号,有颜色
    dmesg | grep eth -n --color=auto
    5:demsg输出的信息找出eth的行,并且找出含eth的前两行和后三行
    dmesg |grep eth -n -A3 -B2 --color=auto

    grep退出的状态

    echo $?

    # 0:表示成功
    # 1:表示没有匹配到
    #
    2:表示参数中的文件不存在

    六、应用场景

    1:匹配行的上下文
    ifconfig | grep -C 3 "Link encap" 
    -A n  后n行,A记忆为(After)
    -B n  前n行,B记忆为(Before)
    -C n  前n行,后n行,C记忆为(Center)
     
    2:用-c统计数目
    grep -c "baidu.com" file.txt
    3:根据文件内容查找目录
    grep "declare"           当前目录下查找
    grep -r "declare"         当前目录以及子目录下查找
    grep -r -l "declare"      查找只显示文件名称,不具体显示的行
    grep -R --exclude-dir="filename" baidu.com  除开某一个目录不匹配
    4、过滤掉注释行
    grep  ^[^#]  filename

          

    5、过滤掉有空格的注释行
    grep "^s*[^# 	].*$" filename
    6、在file2中找出包含file1字符串的字符串
    file1:                     
    ddf                           
    ddc                          
               
    file2:
    shinjldin
    adcddf
    ddf

    grep -f file1 file2  

     
    得到的结果:
    adcddf
    ddf
     
    7、ps aux | grep init 与ps aux |grep [i]nit的区别
     
    ps aux | grep init:
    ps aux |grep [i]nit:
     
    第一个init的时候她会把grep init也弄到进程里,所有可以匹配到init
    第二个[i]nit的时候会把grep [i]nit 弄到进程里,但是[i]nit只能匹配init和nit,所有就只有一个
     
    echo grep init |grep init
    echo grep init |grep [i]nit
    echo grep [i]nit |grep init
    echo grep [i]nit |grep [i]nit

      

    七、grep -E 与 grep 的区别

    1、使用方法
    grep -E “^[a-zA-Z0-9]” filename 
    grep "^[a-zA-Z0-9]" filename 如果不加E的话,会匹配出错

    2、实例

    下面两个写法都能达到同一个目的,使用-E与不使用-E的写法

    cat a.txt |grep -oE 'id=[0-9]{9,10}'
    cat a.txt |grep -o 'id=[0-9]{9,10}'

    八、学习交流

    欢迎大家关注我的公众号,一起交流、学习。 

  • 相关阅读:
    OpenCV 3.4.0 + Visual Studio 2015开发环境的配置(Windows 10 X64)
    数值分析4
    数值分析3
    数值分析2
    数值分析1
    绪论0.4
    绪论0.3
    绪论0.2
    绪论0.1
    GitHub之起势
  • 原文地址:https://www.cnblogs.com/lemon-le/p/14262758.html
Copyright © 2011-2022 走看看