shell脚本——正则表达式
什么是正则表达式
正则表达式分为基础正则和扩展正则,都是为了匹配符合预期要求的字符串
正则表达式与通配符的区别
只需要记住,对文件内容或是展示文本的操作都是正则,而对目录或文件名的操作则都是通配符(例如find指令)
基础正则和扩展正则
扩展正则包含基础正则,而且多出了 + ? | ()四个指令(注意这里的 | 要和管道符分开)
扩展正则不需要像基础正则一样对某些符号进行转义(一般是用 反斜杠 \ 来进行)
基础正则表达式符号
| 符号 | 描述 | 实例 |
| . | 代表单个字符(必须存在) |
a..b 可以表示acdb aaab 、abbbb 但不可以表示acb、ab、aba等 |
| * |
要和通配符区分开,匹配 * 前面一个字符的0个或多个 *后面的字符一定要在*前面字符的后面 另外*前后字符必须相邻否则匹配不到 |
a*b 可以表示ab、aab、b、abababab 但不可以表示acb、ba等 acb只会匹配到b,也就是视为b前面有0个a ba也只会匹配到b,同样视为b前面有0个a |
| ^ | 匹配 ^ 后面字符串开头 |
输入:echo -e abcd\accc | grep "^ab" 输出:abcd |
| $ | 匹配 $ 前面字符串结尾 |
输入:echo -e abcd\accc | grep "cc$" 输出:accc |
| .* | 匹配任意个字符(0到多个) |
a.*b 和通配符里面的 * 大致类似 可以代表ab、 acb、 a……b 但不能代表b……a |
| [] |
表示范围,可以用来进行模糊匹配 常用选项为【a-z】 【0-9】 |
1. grep【0-9】 text 过滤出含数字的行 2. grep【a-z】 text 过滤出含小写字母的行 3. grep 【abc】 text 过滤出含有a,b,c的行(注意这个abc是分别匹配,也就是相当于匹配含有a的行,b的行,c的行,并不是字符串abc的行) |
| {} |
{n,m}表示匹配 {} 前面字符的至少n个,最多m个 字符,注意:是连在一起的连续字符 还可以为{n,}表示至少有n个 {,m}表示最多有m个 |
1.输入echo abbcdfbjk | grep -E "b{1,2}" 输出 abbcdfbjk 2. 如果 输入 echo abbcdfbjk | grep -E "b{2,}" #表示至少两个 输出结果为 abbcdfbjk 可以看到只有连在一起的两个bb被匹配到,也就是说明了{}里面的数字表示的不是匹配到的个数,而是匹配字符的长度,像这个例子就是要求出现 b 的长度至少是2,所以只有 bb 被匹配到了 3. 输入 grep -E "ac{2,5}b" 匹配a和b之间至少2个最多5个c的行,但是acb要连在一起 |
| 【^】 | 【^a】表示匹配 a 以外的所有字符 |
输入 echo -e abc \ def \ lmn | grep "[^f-z]" 输出 abc def lmn,只有[a-e]配匹配到 |
| ^[^] | 匹配 ^[^a]中的以a为开头以外的所有行 | grep "^[^#]" /etc/passwd 匹配 /etc/passwd 里面不以#开头的所有行 |
| \< ; \> |
锚定 单词首部 (尾部) 表示在匹配在首部(尾部)以空格或特殊字符为分隔的指定字符。如果同时锚定首尾 \< \> 则表示这个字符的准确匹配,它的前后为特殊字符或空格分隔,不会和任何字符直接连接 注意:必须要加 \ 转义,即使使用扩展正则也要加 \ 进行转义 |
输入 :echo "hi,rootamroot" | grep "\<root" 输入: echo "hiroot iamroot" | grep "root\>" 输入: echo "hi,root iamroot" | grep "\<root\>" |
| () |
\1 调用前面的参数—第一个分组(也就是括号里的参数) 如果用扩展正则则不需要 \ 来进行转义 |
过滤出一行中有两个相同数字的行 # grep "\([0-9]\).*\1" /etc/passwd 过滤出行首和行位字母相同的行 # grep "^\([a-z]\).*\1$" /etc/passwd |
shell脚本——正则表达式的更多相关文章
- Shell 编程 正则表达式
本篇主要写一些shell脚本正则表达式的使用基础. 概述 正则表达式分为基础正则表达式(Regular Expression)与扩展正则表达式(Extended Regular Expression) ...
- 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式
正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...
- shell脚本 字串截取 正则表达式
字串处理 子串截取方法一:使用${}表达式格式:echo ${x:起始位置:长度}(起始位置编号从0开始,可省略) 方法二:使用expr substr格式:expr substr "$x&q ...
- Shell脚本的编写,sed的使用以及一些正则表达式
Shell脚本的简单编写以及sed的使用 标签(空格分隔): 博客文章 前一阵子为了批量修改Web审计规则,故编写了一个Shell脚本,顺便使用了下sed,顺便把正则表达式也重新学习一遍,感觉还是需要 ...
- shell脚本命令(sotr/unip/tr/cut/eval)与正则表达式
shell脚本命令(sotr/unip/tr/cut/eval)与正则表达式 1.sort命令 概述: Linux sort命令用于将文本文件内容加以排序. sort命令可针对文本文件的内容,以行为单 ...
- Linux shell 脚本攻略之正则表达式入门
摘自:<Linux shell 脚本攻略> 下面是类似的解释:
- shell脚本(14)-正则表达式
一.正则表达式介绍 正则表达式是一种文本模式匹配,包括普通字符(a...z)和特殊字符(元字符). 它是一种字符串匹配模式,可以用来检查一个字符串是否含有某种子串.将匹配的子串替换或者从某个字符串中取 ...
- 学习 shell脚本之前的基础知识
转载自:http://www.92csz.com/study/linux/12.htm 学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写sh ...
- linux 基础 shell脚本命令
#########shell脚本命令#### 1.diff diff file file1 ####比较两个文件的不同 -c ####显示周围的行 -u ####按照一格式统一输出生成补丁 -r ## ...
随机推荐
- 【tensorflow-转载】tensorflow模型部署系列
参考 1. tensorflow模型部署系列: 完
- [LeetCode] 6. ZigZag Converesion 之字型转换字符串
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- Ubuntu16.04 安装搜狗Linux中文输入法
参考链接: https://blog.csdn.net/leijieZhang/article/details/53707181 补充:安装完搜狗拼音输入法后候选栏是乱码的情况,解决方法如下: 输入如 ...
- objectARX2010及其以上版本使用publish打印(发布)图纸,后台布局打印图纸例子浅析
AutoCAD 2010版本开始新增了一个发布图纸的功能,可以后台打印图纸,以下是ADN官方博客例子浅析 原文地址 https://adndevblog.typepad.com/autocad/201 ...
- QT笔记--组合框
1 数据项 (1)位置 index 第一项位0 (2)文本text 这一项的显示值 (3) 关联数据,每一项可以关联一个数据比如整数或者文本类型数据 2 手工添加项 (1)additem:新数据项附加 ...
- Clean code 关于注释、函数、命名的感想
最近在看代码整洁之道(Clean code)这本书,其实看的有点痛苦,因为越看就会越想自己写的代码是什么鬼?一些不知所云的命名,不整洁的代码格式,本想诠释代码的意思却添加了一段段废话,还有那些被强制加 ...
- 使用TCP的协议有哪些?使用UDP的协议有哪些?
运行于TCP协议之上的协议: HTTP协议:超文本传输协议,用于普通浏览 HTTPS协议:安全超文本传输协议,身披SSL外衣的HTTP协议 FTP协议:文件传输协议,用于文件传输 POP3协议:邮局协 ...
- NLP自然语言处理的开发环境搭建
NLP的开发环境搭建主要分为以下几步: Python安装 NLTK系统安装 Python3.5下载安装 下载链接:https://www.python.org/downloads/release/py ...
- LOJ2267 SDOI2017 龙与地下城 FFT、概率密度函数、Simpson
传送门 概率论神仙题-- 首先一个暴力做法是设\(f_{i,j}\)表示前\(i\)个骰子摇出点数和为\(j\)的概率,不难发现DP的过程是一个多项式快速幂,FFT优化可以做到\(O(XYlog(XY ...
- TeX 家族(TeX, pdfTeX, XeTeX, LuaTeX, LaTeX, pdfLaTeX, XeLaTeX …)
TeX 家族 带有 TeX 的词,仅仅是本文就已经提到了 TeX, LaTeX, XeLaTeX.通常中国学生面对不了解意思的一群形近单词,都会有一种「本能的恐惧」(笑~).因此,「大神们」在为新手介 ...