首页 > 系统相关 >LInux三剑客之正则表达式

LInux三剑客之正则表达式

时间:2022-12-19 11:34:55浏览次数:49  
标签:字符 grep 正则表达式 re 正则 LInux egrep txt 三剑客

正则表达式注意事项:
正则的符号,都是英文;
推荐使用grep/egrep,默认设置了别名,自动加上颜色;
http://nbre.oldboylinux.cn 分析正则与正则匹配到的内容;

 

符号概述:

正则表达式 regular expression/regexp:
基础正则:^ $ . * .* [] [^];
扩展正则:| () {} ? +;
其他类型正则;

 

 

基础正则:

三剑客命令默认支持的正则;

环境准备,创建一个文件,里边写上内容;
1)^,以……开头的行;
grep '^root' /etc/passwd
2) $,以……结尾的行;
# grep 'nologin$' /etc/passwd
cat -A //可以看文件中隐藏的内容,比如,空格
3) ^$,空行,这行中没有任何字符,空格都不能有;
4). ,点,表示任意一个字符;
grep 'r..t' /etc/passwd
注意:.,点它不会匹配空行;
5)\,撬棍,转义字符,脱掉马甲打回原形,去掉特殊符号的含义;
找出文件以.结尾的行;grep '.$' /etc/passwd,这样看起来没问题,但是.是匹配所有;
grep '\.$' re.txt //加上个\,就表示.了,不会匹配所有字符;
6)*,前一个字符连续出现了0次或0次以上;
这个符号刚开始学习正则的时候不常用;
7).*,表过所有;任意字符出现了任意次;
当正则匹配连续出现的时候,是贪婪匹配;
8)[],中括号,[abc],表示匹配中括号里边的任意一个字符,a或b或c;
匹配数字 [0-9]
小写字母 [a-z]
大写字母 [A-Z]
大小写字母[A-Za-z] 或者简写[a-Z]
大小写字母+数字,[a-Z0-9]/[0-Z]
匹配以.或!或空格结尾的行
grep [.! ] re.txt //在中括号中,会自动去掉特殊符号的含义;
9)[^],中括号中,取反操作;[^abc],表示匹配任意一个非abc的字符;
建议:掌握正则一段时间后再来使用;

 

 

扩展正则

1)+ 前一个字符连续出现1次或多次;大部分配合着中括号一起用;
取出连续出现的0
egrep '0+' re.txt //要用扩展正则,grep无法识别,需要用egrep 或 grep -E,sed -r支持扩展正则;
只想看匹配的内容,不要其他内容:-o(字母O)
[root@web01 ~]# egrep -o 'o+' /etc/passwd
取出连续的数字:egrep '[0-9]+' re.txt
取出连续出现的字母(单词):egrep '[a-Z]+' re.txt

2) | 或者
文件中包含mclind或linux的行
egrep 'mclind|linux' re.txt
过滤出/etc/ssh/sshd_config中的空间或注释,输出的时候显示行号
[root@web01 ~]# egrep -n '^$|#' /etc/ssh/sshd_config
[root@web01 ~]# egrep -nv '^$|#' /etc/ssh/sshd_config

3)(),小括号,表示一个整体;用于后向引用(反向引用sed)
grep 'mclind|mclond' re.txt
grep 'mcl(i|0)nd' re.txt

4){}, a{n,m},表示前一个字符,至少出现n次,最多m次;
a{n},表示前一个字符,连续出现n次;
a{n,},表示前一个字符,至少出现n次;
a{,m},表示前一个字符,至少0次,至多m次;

5)?,表示前一个字符,出现了0次或1次;
egrep 'gd|god' re.txt
egrep 'go?d' re.txt

 

 

perl语言正则表达式

1)\d :数字,相当于[0-9];
grep -P '\d' re.txt
2)\s:匹配空字符,比如空格,tab键等;
3)\w:[0-9a-zA-Z_]
4)\D : \d取反,非数字;
5)\S :\s取反,非空;
6)\W:\w取反,排除字母数字和下划线;

 

 

 

 

 

 

 

 

 

 

 

零碎的正则-括号表达式

info grep中可以查到,很多
grep '[[:alnum:]]' re.txt //匹配数字和字母
[:alpha:] : 字母;
[:digit:] :数字;

 

标签:字符,grep,正则表达式,re,正则,LInux,egrep,txt,三剑客
From: https://www.cnblogs.com/mclind/p/16991722.html

相关文章

  • Linux四剑客与正则之sed命令
    sed:常用来取行,过滤,替换修改文件内容;向后引用;格式:sed选项'条件动作/找谁干啥'文件;取出文件第3行sed-n'3p'/etc/passwd//p就是输出,-n,取消默认输出如何运行:sed命令运行......
  • Qt音视频开发06-海康sdk内核linux客户端
    一、前言海康sdk的示例在官方是提供了的,但是无论UI还是交互简直是宇宙无敌的垃圾,猜测应该是初学者编写的,估计练手用的,所以老早就想把这个linux支持集成到自己的示例中,既然......
  • Linux入门到精通
    时间同步chrony1、ntp服务器搭建yum-yinstallchronyvi/etc/chrony.conf....#server用户客户端指向,上层NTP服务器server0.centos.pool.ntp.orgiburstserver......
  • Linux Shell远程执行命令(命令行与脚本方式)
    shell远程执行:经常需要远程到其他节点上执行一些shell命令,如果分别ssh到每台主机上再去执行很麻烦,因此能有个集中管理的方式就好了。一下介绍两种shell命令远程执行的方......
  • 最小的 x86 Linux 模拟器:blink
    1.1最小的x86Linux模拟器:blink主语言:CNewblink是一款虚拟机可用来跑静态编译的x86-64Linux,它适用于不同的操作系统和硬件架构。它和qemu-x86_64实现类似功能,除......
  • 常用的 linux 命令
    这篇文章记录自己日常工作中用到的命令,作为自己的命令速查手册,将保持不断更新。alternatives切换一条命令的不同指向。一开始,服务器上安装了两个Java版本,如果想要从一......
  • 史上最小 x86 Linux 模拟器「GitHub 热点速览 v.22.50」
    本周GitHubTrending略显冷清,大概是国内的人们开始在养病,而国外的人们开始过圣诞、元旦双节。热度不减的ChatGPT依旧占据了本周大半的GitHub热点项目,不过本周的特推......
  • (转载)linux中atoi函数
    标准C库函数#include<stdlib.h>原型:intatoi(constchar*str);功能:将字符串str转换成一个整数并返回结果。参数str以数字开头,当函数从str中读到非......
  • Linux chage命令解析说明
    [root@system1~]#chage-lrootLastpasswordchange :Dec18,2022Passwordexpires :neverPasswordinactive :neverAccountexpires :neverMini......
  • Linux 文件基本属性
    Linux 文件基本属性全文摘自:https://www.runoob.com/linux/linux-file-attr-permission.htmlLinux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限......