正则表达式(基础和扩展)

在Linux系统中常见的文件处理工具中grep和sed支持基础正则表达式。

grep——正则表达命令,用来过滤文件内容。

选项:

  • -i:查找时不区分大小写字母;
  • -v:反向查找,将不符合查找条件的列都显示出来;
  • -n:将输出的结果显示行号;
  • -A:后面可以追加数字,为after的意思,除了列出该行外,后面的n行也列出来;
  • -B:与“-A”的作用相反,它是除了该行以外,前面的n行也列出来;

示例(在命令执行后的输出结果中,标红的就是查找到的内容):

[[email protected] ~]# dmesg | grep ‘Ebtables‘    #dmesg是列出核心信息,然后过滤出 包含‘Ebtables‘ 字符的行
[   18.440389] ‘Ebtables‘ v2.0 registered
[[email protected] ~]# dmesg | grep -n -A3 -B2 ‘Ebtables‘
#这是将过滤的内容显示行号,并且列出 ‘Ebtables‘ 该行,以及它的后面三行以及前面两行
1773-[    7.850479] NET: Registered protocol family 40
1774-[   18.203047] ip6_tables: (C) 2000-2006 Netfilter Core Team
1775:[   18.440389] ‘Ebtables‘ v2.0 registered
1776-[   18.510067] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
1777-[   18.714192] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this.
1778-[   18.783253] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
[[email protected] ~]# grep -in ‘bash‘ /etc/passwd
#查找该文件中的“bash”字符,提示:拥有“bash”字符的都是可以登录到系统的用户。
1:root:x:0:0:root:/root:/bin/bash
43:lisi:x:1000:1000:lisi:/home/lisi:/bin/bash
[[email protected] ~]# grep -in ‘pr[io]‘ /etc/passwd   “pr”后面要么是i要么是o的行
14:systemd-bus-‘pro‘xy:x:999:997:systemd Bus ‘Pro‘xy:/:/sbin/nologin
28:rtkit:x:172:172:RealtimeKit:/‘pro‘c:/sbin/nologin
41:sshd:x:74:74:‘Pri‘vilege-separated SSH:/var/empty/sshd:/sbin/nologin
[[email protected] /]# grep -n ‘^the‘ test.txt    #查找文件中以the开头的行,并显示行号
4:‘the‘  tongue is boneless bu it breaks  bones.12!
[[email protected] /]# grep -n ‘^[a-z]‘ test.txt     #搜索文件中以小写字母开头的行
1:he was short and  fat.
4:the  tongue is boneless bu it breaks  bones.12!
5:google is the best  tools for search keyword.
8:a wood cross!
[[email protected] ~]# grep -n ^[^a-zA-Z] test.txt     #搜索不以字母开头的行
11:#woood #
12:#woooooood #
[[email protected] ~]# grep -n "\.$" test.txt     #搜索以.结尾的行
1:he was short and  fat.
2:He was  wearing a blue  polo shirt with  black pants.
3:The  home  of Football  on BBC  Sport  online.
5:google is the best  tools for search keyword.
6:The year  ahead will  test  our political  establishment to the limit.
15:Misfortunes  never come  alone/single.
16:I shouldn‘t have lett  so tast.
[[email protected] ~]# grep -n "^$" test.txt     #显示空行
10:
17:

正则表达式中的特殊符号及其意义(大多数可以以另一种方式表达,这里只是做一个记录,以便日后查阅):

基础正则表达式——小数点和星号

  • . (小数点):代表一定有一个任意字符;
  • * (星号):代表重复前一个字符,可以重复0次到无穷多的意思(0表示也可以没有前面那个字符)。

使用举例:

[[email protected] ~]# grep -n ‘sh..t‘ test.txt    #查询以sh开头,以t结尾,中间最少有两个字符的行
1:he was ‘short‘ and  fat.
2:He was  wearing a blue  polo ‘shirt‘ with  black pants.
[[email protected] ~]# grep -n ‘wo*‘ test.txt    #查找以w开头,后面有0个或无穷多个o的行
1:he ‘w‘as short and  fat.
2:He ‘w‘as  ‘w‘earing a blue  polo shirt ‘w‘ith  black pants.
5:google is the best  tools for search key‘wo‘rd.
6:The year  ahead ‘w‘ill  test  our political  establishment to the limit.
8:a ‘woo‘d cross!
9:Actions speak louder  than  ‘wo‘rds
11:#‘wooo‘d #
12:#‘wooooooo‘d #

由于上面的显示方式,并不友好,我还要将过滤结果标红,所以接下来我就上截图了。

自己看下面的执行结果:


grep命令总结——基础正则表达式字符汇总

egrep命令——扩展正则表达式

一般来说基础正则表达式足以我们使用了,但如果想要简化整个指令,那么就可以使用扩展正则表达式,如果使用扩展正则表达式,需要使用egrep或awk命令,常见的扩展正则表达式的元字符主要包括如下几个:

扩展正则表达式字符汇总:

原文地址:https://blog.51cto.com/14154700/2432199

时间: 2024-11-09 04:48:26

正则表达式(基础和扩展)的相关文章

前端学PHP之正则表达式基础语法

前面的话 正则表达式是用于描述字符排列和匹配模式的一种语法规则.它主要用于字符串的模式分割.匹配.查找及替换操作.在PHP中,正则表达式一般是由正规字符和一些特殊字符(类似于通配符)联合构成的一个文本模式的程序性描述.正则表达式有三个作用:1.匹配,也常常用于从字符串中析取信息:2.用新文本代替匹配文本:3.将一个字符串拆分为一组更小的信息块.本文将详细介绍PHP中的正则表达式基础语法 [注意]关于javascript的正则表达式的详细信息移步至此 历史 在PHP中有两套正则表达式函数库,两者功

刨根究底正则表达式之二——正则表达式基础

正则表达式基础 一.正则表达式构成 1. 正则表达式中的语法元素,从是否具有特殊含义的角度进行分类,可分为下列两大类.共五种语法元素: 1)不具有特殊含义的语法元素 (1)  字面字符(文本字符):不具有特殊含义的单个字符,代表字符自身(即字符字面值): (2)  普通转义序列:由转义前导符\后跟元字符所组成的字符序列,将具有特殊含义的元字符,转义为(即转换为)不具有特殊含义的字符本身(即字符字面值): 2)具有特殊含义的语法元素 (1)  元字符:具有特殊含义的单个字符,包括:\.(.).[.

Linux 基础入门----正则表达式基础

介绍 虽然我们这一节的标题是正则表达式,但实际这一节只是介绍grep,sed,awk这三个命令,而正则表达式作为这三个命令的一种使用方式(命令输出中可以包含正则表达式).正则表达式本身的内容很多,要把它说明清楚需要单独一门课程来实现,不过我们这一节中涉及到的相关内容通常也能够满足很多情况下的需求了. 想要更深入地学习使用正则表达式,在这里 正则表达式基础. 一.正则表达式 什么是正则表达式呢? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Ex

1.11正则表达式基础(学习过程)

正则表达式基础 实验介绍 虽然我们这一节的标题是正则表达式,但实际这一节实验只是介绍grep,sed,awk这三个命令,而正则表达式作为这三个命令的一种使用方式(命令输出中可以包含正则表达式).正则表达式本身的内容很多,要把它说明清楚需要单独一门课程来实现,不过我们这一节中涉及到的相关内容通常也能够满足很多情况下的需求了. 想要更深入地学习使用正则表达式,在这里 正则表达式基础. 一.正则表达式 什么是正则表达式呢? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英

bash shell学习-正则表达式基础 (笔记)

A gentleman is open-minded and optimistic; a small person is narrow-minded and pessimistic. "君子坦荡荡,小人长戚戚" 参考资料:鸟哥的Linux私房菜 基础学习篇(第三版) 一.正则表达式基础 1.什么是正则表达式 正则表达式(Regular Expression, RE)是对字符串操作的一种逻辑公式,就是用一些事先定义好的特定字符及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串

黑马程序员-正则表达式基础

正则表达式是一种描述字符串集的方法,它是以字符串集中各字符串的共有特征为依据的.正则表达式可以用于搜索.编辑或者是操作文本和数据.它超出了 Java 程序设计语言的标准语法,因此有必要去学习特定的语法来构建正则表达式.正则表达式的变化是复杂的,一旦你理解了它们是如何被构造的话,你就能解析或者构建任意的正则表达式了..正则表达式由一些普通字符和一些元字符组成. 普通字符包括大小写的字母和数字,而元字符则具有特殊的含义.在最简单的情况下,一个正则表达式看上去就是一个普通的查找串.例如,正则表达式"a

正则表达式基础---转自 Python正则表达式指南 前边

1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同:但不用担心,不被支持的语法通常是不常用的部分.如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了. 下图展示了使用正则表达式进行匹配的流程:  正则表达式的大

javascript之正则表达式基础知识小结

javascript之正则表达式基础知识小结,对于学习正则表达式的朋友是个不错的基础入门资料. 元字符 ^ $ . * + ? = ! : | \ / ( ) [ ] { } 在使用这些符号时需要用“\”来进行转移. 如果记不清楚那些标点符号需要转移,可以在使用标点符号时都使用反斜杠“\” 简单匹配 1.直接量 /javascript/ 匹配带有“javascript”的字符串 比如“javascript is an object-oriented scripting language” 2.[

转:正则表达式基础知识

一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.该模式描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.如: JScript VBScript 匹配 /^\[ \t]*$/ "^\[ \t]*$" 匹配一个空白行. /\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个ID 号码是否由一个2位数字,一个连字符以及一个5位数字组成. /<(.*)&

正则表达式基础及java使用

正则表达式基础 正则表达式语法(1) 普通字符:字母,数字,汉子,下划线以及没有特殊定义的标点符号都是"普通字符".表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符 简单的转义字符: \n :代表换行符 \t :代表制表符 \\ :代表\本身 \^ ......  :代表匹配这字符本身 正则表达式语法(2) 标准字符集合: 能够与多种字符匹配的表达式 注意区分大小写,大写是相反的意思 \d :任意一个数字,0-9中的任意一个 \w:任意一个字母或者下划线或者汉字,也就