linux运维开发(六)----------三剑客之grep

文章目录

    • grep特点:
    • grep使用场景:
    • grep详解:
      • 正则匹配选项:
      • 匹配控制:
      • 基本输出控制:
        • 常用选项:
        • 高级选项:
      • 输出行前缀控制:
        • 常用选项:
        • 高级选项:
      • 上下文行控制:
      • 文件或者目录选项控制,属于高级
    • 附录
      • 正则表达式:
        • 基本正则表达式:
        • 字符重复表示:
      • grep的color配置:

grep特点:

grep、sed和awk共属于linux三剑客,awk擅长对记录进行分割处理,sed利于对文本行进行修改,而grep则只是匹配输出。某些使用上sed和grep有共同之处,都可以用来匹配输出。不过grep的匹配更加强大。

grep使用场景:

在linux系统中,作为java开发人员,经常会使用这样一条命令:

ps -ef | grep -E ‘java|mysql’

这条命令可以帮助开发人员定位java和mysql进程,查看是否启动成功和杀死进程,作为最常用的命令,接下来我们来深入了解grep的使用方法

grep详解:

正则匹配选项:

  • -G:最基本的正则匹配,grep的默认选项
  • -E:扩展的正则匹配,-G和-E的不同之处在最后讲解

grep -E ‘a[p]+’ regular_test.txt

  • -P:基于perl语言的匹配方式

匹配控制:

  • -e:多次使用-e进行连续匹配

grep -e ‘the’ -e ‘apple’ regular_test.txt

  • -f:将一个文件内容作为匹配模式进行匹配,常用于比较文件

比较文件相同之处:

grep -f netstat.txt netstat2.txt

比较文件不同之处:

grep -v -f netstat.txt netstat2.txt

  • -i和-y:匹配时忽略大小写区别

grep -i the regular_test.txt

  • -v:反选输出,即选择匹配不成功的行

grep -iv the regular_test.txt

  • -w:用行中的单词进行匹配,而非字母匹配或者包含匹配

grep -w tools regular_test.txt

基本输出控制:

常用选项:

  • -c:只打印结果行的数量

grep -ic the regular_test.txt

高级选项:

  • –color:设置匹配字符串的颜色,默认选项为auto,可以设置的值为always,never

grep -i the regular_test.txt --color=never

never选项将会使得匹配字符串没有任何样式

  • -m:指定匹配的行数,当匹配的行数达到了设定值,停止匹配

grep -i -m 3 the regular_test.txt

  • -o:只打印匹配字符串

grep -i -m 3 -o the regular_test.txt

输出行前缀控制:

常用选项:

  • -n:指定行号

grep -i -n the regular_test.txt

高级选项:

  • -h:行首不显示文件名称,默认选项

grep -i -h the regular_test.txt

  • -H:行首显示文件名称

grep -i -H the regular_test.tx

  • -b:行首显示该行的字节数

grep -i -b the regular_test.txt

上下文行控制:

  • -A:输出匹配行的后面几行内容,对应after的含义

grep -A 1 the regular_test.txt

  • -B:输出匹配行的前面几行内容,对应before的含义

grep -B 2 the regular_test.txt

  • -C:输出匹配行的前后几行内容

grep -C 1 the regular_test.txt

文件或者目录选项控制,属于高级

  • -D ACTION:当输入是设备,比如FIFO队列、socket套接字,将使用-D指定的ACTION进行操作,默认是read操作。如果指定为skip,则会静默跳过,不做处理

  • -d ACTION:当输入是目录,使用ACTION进行处理,可以参数为read,skip,recurse,默认是r,将目录当做普通文件处理,skip则是跳过该输入,recurse则是遍历目录下的所有文件当做输入文件进行处理

grep -d recurse ‘LISTEN’ netstat

附录

正则表达式:

基本正则表达式:

  • [a-z]:表示a-z的任何一个字符
  • [A-Z]:表示A-Z的任何一个字符
  • [0-9]:表示0-9的任意一个数字
  • [A-Za-z0-9]:表示以上三个中的任意一个

基本的正则表达式在使用?, +, {, |, (, 和 )字符的时候需要使用 / 进行转义,但是扩展的正则表达式不需要转义

字符重复表示:

  • ?:表示重复前面字符0-1次
  • *:表示重复前面字符0-n次
  • +:表示重复前面字符1-n次
  • {n}:表示重复前面字符n次
  • {n,}:表示重复前面字符n-m次
  • {,m}:表示重复前面字符0-m次
  • {n,m}:表示重复前面字符n-m次

grep的color配置:

在~/.bashrc文件中加两行:

export GREP_COLOR=‘4;41’
source ~/.bashrc

export GREP_COLOR=‘a;b’ #默认是1;31,即高亮的红色; 您可以根据自己的喜好设置不同的颜色;

  • a可以选择:【0,1,4,5,7,8】

    • 0 关闭所有属性

    • 1 设置高亮度

    • 4 下划线

    • 5 闪烁

    • 7 反显

    • 8 消隐

  • b可以选择:【30-37或40-47】

    • 30 black

    • 31 red

    • 32 green

    • 33 yellow

    • 34 blue

    • 35 purple

    • 36 cyan

    • 37 white

    • 30 — 37 设置前景色

    • 40 — 47 设置背景色

更多问题可以加公众号:代码小栈,期待为您解决更多问题
代码小栈

你可能感兴趣的:(linux)