第七章 Shell正则表达式

正则表达式在每种语言中都会有,目的就是匹配符合你预期要求的字符串。

7.1 Shell正则表达式

基础正则表达式:BRE(basic regular express)

扩展正则表达式:ERE(extend regular express),扩展的表达式有+、?、|和()


符号


描述


示例

. 匹配除换行符(\n)之外的任意单个字符
匹配123:

echo -e "123\n456" |grep -E ‘1.3‘

^ 匹配字符串开头
匹配以abc开头的行:

echo -e "abc\nxyz" |grep -E ^abc

$ 匹配字符串结尾
匹配以xyz结尾的行:

echo -e "abc\nxyz" |grep -E xyz$

* 匹配多个
匹配以w开头d结尾的字符串:

echo "hello world" |grep -E -o ‘world‘

+ 匹配1个或多个
匹配abc和abcc:

echo -e "abc\nabcc\nadd" |grep -E ‘ab+‘

这样是匹配单个数字:echo "113" |grep -E -o ‘[0-9]‘

连续匹配多个数字:echo "113" |grep -E -o ‘[0-9]+‘

匹配0个或1个
匹配ac或abc:

echo -e "ac\nabc\nadd" |grep -E ‘a?c‘

[ ] 匹配中括号之中的任意一个字符
匹配a或c:

echo -e "a\nb\nc" |grep -E ‘[ac]‘

[ .-.] 匹配中括号中范围内的任意一个字符
匹配所有字母:

echo -e "a\nb\nc" |grep -E ‘[a-z]‘

[^] 匹配[^字符]之外的任意一个字符
匹配a或b:

echo -e "a\nb\nc" |grep -E ‘[^c-z]‘

{n}或{n,} 匹配花括号前面字符至少n个字符
匹配abc字符串(至少三个字符以上字符串):

echo -e "a\nabc\nc" |grep -E ‘[a-z]{3}‘

{n,m} 匹配花括号前面字符至少n个字符,最多m个字符
匹配12和123(不加边界符会匹配单个字符):

echo -e "1\n12\n123\n1234" |grep -E -o ‘\<[0-9]{2,3}\>‘

\< 边界符,匹配字符串开始
匹配开始是123和1234:

echo -e "1\n12\n123\n1234" |grep -E ‘\<123‘

\> 边界符,匹配字符串结束
匹配结束是1234:

echo -e "1\n12\n123\n1234" |grep -E ‘4\>‘

( )
单元或组合:将小括号里面作为一个组合

分组:匹配小括号中正则表达式或字符。\n反向引用,n是数字,从1开始编号,表示引用第n个分组匹配的内容


单元:匹配123a字符串

echo "123abc" |grep -E -o ‘([0-9a-z]){4}‘

分组:匹配11

echo "113abc" |grep -E -o ‘(1)\1‘

| 匹配竖杠两边的任意一个
匹配12和123:

echo -e "1\n12\n123\n1234" |grep -E ‘12\>|123\>‘

\ 转义符,将特殊符号转成原有意义 1.2,匹配1.2:1\.2,否则112也会匹配到

Posix字符


描述

[:alnum:] 等效[a-zA-Z0-9]
[:alpha:] 等效[a-zA-Z]
[:lower:] 等效[a-z]
[:upper:] 等效[A-Z]
[:digit:] 等效[0-9]
[:space:] 匹配任意空白字符,等效[\t\n\r\f\v]
[:graph:] 非空白字符
[:blank:] 空格与定位字符
[:cntrl:] 控制字符
[:print:] 可显示的字符
[:punct:] 标点符号字符
[:xdigit:] 十六进制

示例:

echo -e "1\n12\n123\n1234a" |grep ‘[[:digit:]]‘

博客地址:http://lizhenliang.blog.51cto.com

QQ群:Shell/Python运维开发群 323779636

在Shell下使用这些正则表达式处理文本最多的命令有下面几个:


命令


描述

grep 默认不支持扩展表达式,加-E选项开启ERE。使用花括号要加转义符\{\}
egrep 支持基础和扩展表达式
awk 使用花括号需要开启posix支持:--posix
sed 默认不支持扩展表达式,加-r选项开启ERE。使用花括号要加转义符\{\}或-r

sed/grep支持的特殊字符


描述

\w 匹配任意数字和字母,等效[a-zA-Z0-9_]
\W 与\w相反,等效[^a-zA-Z0-9_]
\b 匹配字符串开始或结束,等效\<和\>
\D 匹配任意单个非数字字符
\s 匹配任意的空白字符
\S 匹配非空白字符

空白符


描述

\n 换行符
\r 回车符
\t 水平制表符
\v 垂直制表符
\0 空值符
\b 退后一格
时间: 2024-11-04 17:53:40

第七章 Shell正则表达式的相关文章

第十五章 shell正则表达式

第十五章 shell正则表达式 见图片 Shell正则表达式 正则表达式的分类 基本的正则表达式(Basic Regular Expression 又叫Basic RegEx 简称BREs) 扩展的正则表达式(Extended Regular Expression 又叫Extended RegEx 简称EREs) Perl的正则表达式(Perl Regular Expression 又叫Perl RegEx 简称PREs) 基本组成部分 正则表达式的基本组成部分. 正则表达式 描述 示例 Bas

第七章 Shell正则应用

目录 1. 正则表达式概述 2. 正则表达式规则 3. 正则表达式之GREP文本过滤 4. 正则表达式之SED文本处理 5. 正则表达式之AWK文本处理 1. 正则表达式概述 01. 什么是正则表达式 正则表达式regular expression, RE是一种字符模式,用于在查找过程中匹配指定的字符. 02. 为什么要使用正则表达式? 在工作中,我们时刻面对着大量的日志,程序,以及命令的输出.迫切的需要过滤我们需要的一部分内容,甚至是一个字符串.比如: 现在有一个上千行的文件,我们仅需要其中包

第三章 shell学习之正则表达式

正则表达式 \<the\>:精确匹配the,不包括包含the的单词 [^b-d]:不包含b~d a\{2\}:a出现2次 a\{2,3\}:a出现2~3次 a\{2,\}:a至少出现2次 [:upper:]:大写字母(用的时候外面加一层[]表示匹配字符集合) [:lower:]:小写字母 [:digit:]:数字 [:alnum:]:大小写字母和数字 [:space:]:表示空格或tab键 [:alpha:]:大小写字母 通配 注意通配和正则表达式不同,虽然有共同的符号 ls -l *.sh

使用JQuery快速高效制作网页交互特效第二章到第七章

第二章 JavaScript对象 浏览器对象模型(BOM)是JavaScript的组成之一,window对象是整个BOM的核心 window对象的常用方法 prompt():显示可提示用户输入的对话框 alert():显示一个带有提示信息和一个"确定"的按钮的警示对话框 confirm():显示一个滴啊有提示信息,"确定"和"取消"按钮的对话框 close():关闭浏览器窗口 open():打开一个新的浏览器窗口,加载给定URL制定的文档 set

APUE学习笔记:第七章 进程环境

7.1 引言 本章将学习:当执行程序时,其main函数是如何被调用的:命令行参数是如何传送给执行程序的:典型的存储器布局是什么样式:如何分配另外的存储空间:进程如何使用环境变量:各种不同的进程终止方式等:另外还将说明longjmp和setjmp函数以及它们与栈的交互作用:还将介绍研究进程的资源限制 7.2 main函数 C程序总是从main函数开始执行.当内核执行C程序时,在调用main前先调用一个特殊的启动例程.可执行程序文件将此启动例程指定为程序的起始地址——这是由连接编辑器设置的,而连接编

第四章 shell学习之sed命令和awk编程

sed命令 sed只是对缓冲区中原始文件的副本进行编辑,不改变源文件,所以要保存则要重定向到另一个文件 sed三种方式: 1.sed [选项] 'sed命令' 输入文件 2.sed [选项] -f sed脚本文件 输入文件 3../sed脚本文件 输入文件 其中3的sed脚本文件要以#! bin/sed -f等开头 选项: -n 不打印所有行到标准输出,默认先打印匹配的再打印所有 -e 关联多个sed命令 -f 调用sed脚本文件 定位文本: x x为指定行号 x,y 从x到y行 /patter

linux程序设计——CD唱片应用程序(第七章)

7.4 CD唱片应用程序 这篇为第七章的CD唱片应用程序,代码在CD唱片应用程序代码下载.我们使用dbm数据库对数据存储,改进之前的CD唱片应用程序. 7.4.1 更新设计 虽然在文件中以逗号分隔变量来存储信息是一种在shell中很容易实现的方式,但是这样局限性很大,因为许多CD标题和曲目都包含逗号.可以通过使用dbm数据库来改进这种方法. 将CD资料分为标题和曲目两个部分,并用不同的文件来保存它们. 前面的实现存在一个问题,即将应用程序的数据访问部分和用户接口部分混在了一起,这与程序全实现在一

第四章 Shell流程控制

流程控制是改变程序运行顺序的指令. 4.1 if语句 4.1.1 单分支 if 条件表达式; then     命令 fi 示例: #!/bin/bash N=10 if [ $N -gt 5 ]; then     echo yes fi # bash test.sh yes 4.1.2 双分支 if 条件表达式; then     命令 else     命令 fi 示例: #!/bin/bash N=10 if [ $N -lt 5 ]; then     echo yes else   

【转】第七章、Linux 文件与目录管理

原文网址:http://vbird.dic.ksu.edu.tw/linux_basic/0220filemanager.php 第七章.Linux 文件与目录管理 最近升级日期:2009/08/26 在第六章我们认识了Linux系统下的文件权限概念以及目录的配置说明. 在这个章节当中,我们就直接来进一步的操作与管理文件与目录吧!包括在不同的目录间变换. 创建与删除目录.创建与删除文件,还有寻找文件.查阅文件内容等等, 都会在这个章节作个简单的介绍啊! 1. 目录与路径 1.1 相对路径与绝对路