grep命令与正则表达式,快速学习正则表达式

news/2024/11/1 16:28:20/

1.了解grep命令常用操作

命令格式

grep [options] pattern [files]
  • pattern:要查找的字符串或正则表达式。
  • files:要查找的文件名,可以同时查找多个文件,如果省略 files 参数,则默认从标准输入中读取数据

常用选项

  • -i:忽略大小写进行匹配。
  • -n:显示匹配行的行号。
  • –color:标红。
  • -v:反向查找,只打印不匹配的行。
  • -o:只显示匹配的部分

常用操作

#从从标准输入中读取数据
mhzzj@mhzzj-virtual-machine:/usr/local/nginx/conf$ ls
fastcgi.conf          fastcgi_params          koi-utf  mime.types          nginx.conf          scgi_params          uwsgi_params          win-utf
fastcgi.conf.default  fastcgi_params.default  koi-win  mime.types.default  nginx.conf.default  scgi_params.default  uwsgi_params.default
mhzzj@mhzzj-virtual-machine:/usr/local/nginx/conf$ ls | grep .conf
fastcgi.conf
fastcgi.conf.default
nginx.conf
nginx.conf.default#从文件指定的部分文件中读取数据
mhzzj@mhzzj-virtual-machine:/usr/local/nginx/conf$ grep "port" nginx.*
nginx.conf:    # another virtual host using mix of IP-, name-, and port-based configuration
nginx.conf.default:    # another virtual host using mix of IP-, name-, and port-based configuration

2.正则表达式基础

字符匹配

  • \\ :匹配转义字符\

  • \t:匹配转义字符\t

  • \n:匹配转义字符\n

  • [...] :匹配括号内任意一字符,如[ab]表示匹配a或b

    mhzzj@mhzzj-virtual-machine:~$ echo "abcd mn bbb xcm/"| grep -o [ax//]
    a
    x
    /
    
  • [^ ...] :匹配括号内任意一字符, 如[ab]表示匹配不是a或b的任一字符

  • [ x-y ]:匹配x~y的任意一字符,如[0-9]表示全部数字的任意一个

  • .: 匹配任意的一位字符

  • \d :匹配任意的一位数字,等价于.[0-9]

  • \D :匹配任意的一位非数字,等价于 .[^0-9]

  • \w:匹配任意的一位数字或大小写字母、等价于 .[a-zA-Z0-9]

  • \W :匹配任意的一位非数字、字母、_、等价于 .[^a-zA-Z0-9 _]

  • \s :匹配任意的一位空格例,如:\n\t等。

  • \S :匹配任意的一位非空格

选择匹配

  • |:选择匹配,如ab|cd匹配字符串ab或者cd

    mhzzj@mhzzj-virtual-machine:~$ echo "abcd mn bbb xcm/"| grep -o "ab\|mn"
    ab
    mn
    

限定符

用于指定前面的字符出现多少次

  • :出现0次或1次

  • *:出现0次或1次或多次

  • +:出现1次或多次

  • {n}:出现n次

  • {n,}:出现n次以上

  • {n,m}:出现n-m次

    mhzzj@mhzzj-virtual-machine:~$ echo "aaaa mn aaa xcm/"| grep -o "a\{2,4\}" 
    aaaa
    aaa
    

边界匹配

  • ^:表示一组正则的开始

  • $:表示一组正则的结束

    #匹配redis.conf 9结尾的行
    mhzzj@mhzzj-virtual-machine:~/env/redis$ grep "9$" redis.conf --color
    port 6379
    # tls-port 6379
    #   user worker +@list +@connection ~jobs:* on >ffa9203c493aa99
    # cluster-announce-tls-port 6379
    
  • \b:匹配一个单词边界,即字与空格间的位置。

  • \B:非单词边界匹配。

3.应用

获取Linux的IP地址

mhzzj@mhzzj-virtual-machine:~/env/redis$ ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.10.155  netmask 255.255.255.0  broadcast 192.168.10.255inet6 fe80::1c2e:c3a0:7596:f375  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:24:13:02  txqueuelen 1000  (以太网)RX packets 3571  bytes 507660 (507.6 KB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 190  bytes 27130 (27.1 KB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0mhzzj@mhzzj-virtual-machine:~/env/redis$ ifconfig ens33 | grep -o "inet [0-9.]\+"|cut -d" " -f2
192.168.10.155

查看redis默认配置

mhzzj@mhzzj-virtual-machine:~/env/redis$ grep -v "^#" redis.conf| grep -v  "^\s*$"
bind 127.0.0.1 -::1
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300

http://www.ppmy.cn/news/60530.html

相关文章

FreeRTOS 任务通知

文章目录 一、任务通知简介二、发送任务通知1. 函数 xTaskNotify()2. 函数 xTaskNotifyFromISR()3. 函数 xTaskNotifyGive()4. 函数 vTaskNotifyGiveFromISR()5. 函数 xTaskNotifyAndQuery()6. 函数 xTaskNotifyAndQueryFromISR() 三、任务通知通用发送函数1. 任务级任务通知通…

运算符重载和重载函数

1.运算符重载的意义 C为了增强代码的可读性引入了运算符重载&#xff0c;运算符重载是具有特殊函数名的函数&#xff0c;也具有其返回值类型&#xff0c;函数名字以及参数列表&#xff0c;其返回值类型与参数列表与普通的函数类似。 函数名字为&#xff1a;关键字operator后面…

汇编语言学习笔记四

字符 字符是以ASCII码的形式存储的&#xff0c;一个字符对应着8为二进制数&#xff0c;2位16进制数。 所以可以得到对应的字符地址。 assume ds:data data segmentdb hellodb world data endsand or指令 根据ASCII码&#xff0c;字符的大写和小写相差一个0010 0000&#xff…

c++——入门(下)

6. 引用 6.1 引用概念 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空 间&#xff0c;它和它引用的变量共用同一块内存空间。 类型& 引用变量名(对象名) 引用实体&#xff1b; void TestRef() {int a 1…

Linux基础IO【重定向及缓冲区理解】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; Linux学习之旅 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 &#x1f307;前言&#x1f3d9;️正文1、文件描述符1.1、先描述&#xff0c;再组织1.2、files_struct1.3、分配规则…

阿里云g8i服务器Intel Xeon(Sapphire Rapids) Platinum 8475B

阿里云服务器ECS通用型实例规格族g8i采用2.7 GHz主频的Intel Xeon(Sapphire Rapids) Platinum 8475B处理器&#xff0c;3.2 GHz睿频&#xff0c;g8i实例采用阿里云全新CIPU架构&#xff0c;可提供稳定的算力输出、更强劲的I/O引擎以及芯片级的安全加固。阿里云百科分享阿里云服…

【设计模式】策略模式

目录 一、定义二、结构三、优点四、缺点五、使用场景六、代码示例 一、定义 1.该模式定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换&#xff0c;且算法的变化不会影响使用算法的客户 2.策略模式属于对象行为模式&#xff0c;它通过对算法进…

Shell脚本2

自定义局部变量 :定义在一个脚本文件中的变量 只能在这个脚本文件中使用的变量&#xff0c;局部变量 语法&#xff1a; var_namevalue 变量定义规则 变量名称可以有字母,数字和下划线组成, 但是不能以数字开头 等号两侧不能有空格 在bash环境中, 变量的默认类型都是字符串…