Shell学习之结合正则表达式与通配符的使用(五)

Shell学习之结合正则表达式与通配符的使用

目录

通配符

  • 正则表达式与通配符
  • 通配符
  • 通配符的使用

正则表达式

  • 正则表达式
  • 正则表达式的使用

通配符

正则表达式与通配符

正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式。

通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来就行匹配。

  

通配符

符号	作用
*	匹配任何字符串/文本,包括空字符串;*代表任意字符(0个或多个) ls file *
?	匹配任何一个字符(不在括号内时)?代表人意1个字符 ls file 0
[abcd]	匹配abcd中任何一个字符
[a-z]	表示范围a到z,表示范围的意思 []匹配中括号中任意一个字符 ls file 0
{..}	表示生成序列。以逗号分隔,且不能有空格
补充
[!abcd]	或[^abcd]表示非,表示不匹配括号里面的任何一个字符

  

通配符的使用

? 匹配任何一个字符

ls /bin/???

ls /bin/??

 [abcd] 表示匹配中括号内任意一个字符就成

ls te[asb]t

 {}生成序列

touch {a..c}

匹配文件

ls [a-c]

利用{}备份数据库 

表示将ae复制一份叫做affff
cp a{e,fff}

表示将ae做备份叫做ae.bak
cp a{e,e.bak}

  

!^表示非,取反

查找文件名里没有a和e的文件名ls [!ae]

ls [^ae]

  

正则表达式

正则表达式

正则表达式的使用

"*" 前一个字符匹配0次,或者任意多次

匹配至少包含有一个a的行
grep "aa*" test.txt

匹配至少包含有两个a的行
grep "aaa*"

"."匹配除了换行符以外任意一个字符

匹配所有内容
grep ".*" test.txt

匹配在s与d之间一定有两个字符的单词
grep "s..d" test.txt

匹配在s与d之间有任意字符
grep "s.*d" test.txt

"^"匹配行首,"$"匹配行尾

匹配空白行
grep "^$" test.txt

匹配以大写字母M开头的行
grep "^M" test.txt

匹配以小写字母m结尾的行
grep "m$" test.txt

"[]‘匹配中括号中指定的任意一个字符,只匹配一个字符
匹配s和i字母中,要不是a、要不是b
grep "s[ao]id" test.txt

匹配任意一个数字
grep "[0-9]" test.txt

匹配用小写字母开头的行
grep "^[a-z]" test.txt

"[^]"匹配除中括号的字符以外的任意一个字符
匹配不用小写字母开头的行
grep "[^a-z]" test.txt

匹配不用字母开头的行
grep "^[^a-zA-Z]" test.txt


"\" 转义符
匹配以点结尾的行
grep "\.$" test.txt

"\{n\}" 表示其前面的字符恰好出现n次

匹配a字母连续出现三次的字符串
grep "a\{3\}" test.txt

匹配包含连续的三个数字的字符串
grep "[0-9]\{3\}" test.txt

"\{n,\}" 表示其前面的字符出现不小于n次

匹配最少用连续三个数字开头的行
grep "^[0-9]\{3,\}[a-z]" test.txt

"\{n,m\}‘匹配其前面的字符至少出现n次,最多出现m次

匹配在字母s和字母i之间有最少一个a,最多三个a
grep "sa\{1,3\}i" test.txt

  

原文地址:https://www.cnblogs.com/-wenli/p/10385468.html

时间: 2024-08-25 21:57:08

Shell学习之结合正则表达式与通配符的使用(五)的相关文章

第三章 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

shell学习之正则表达式【基础篇】

什么是正则表达式: 是你定义的.linux工具用来过滤文本的模式模板.Linux工具(比如sed编辑器或gawk)能够在数据流向工具时对数据进行正则表达式模式匹配.如果数据匹配模式,它就会被接受并进一步处理.如果数据不匹配模式,它就会被过滤掉. |---> 匹配的数据 | 数据流--->正则表达式 ----- |                                    | |---> 不匹配的数据 正则表达式用来在文件中匹配符合条件的字符串,正则包含匹配.Grep.awk.

Shell学习笔记 - 正则表达式

一.正则表达式是什么? 正则表达式是用于描述字符排列和匹配模式的一种语法规则.它主要用于字符串的模式分割.匹配.查找及替换操作. 二.正则表达式与通配符 1. 正则表达式 用来在文件中匹配符合条件的字符串,正则表达式是“包含匹配”.grep.awk.sed等命令可以支持正则表达式. 2. 正则表达式元字符 正则表达式是通过元字符来进行字符串匹配的,具体请参考:http://www.cnblogs.com/refine1017/p/5011522.html 3. 通配符 用来匹配符合条件的文件名,

[Shell]正则表达式与通配符

------------------------------------------------------------------------------------- 正则表达式与通配符: 1. 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式. 2. 通配符用来匹配符合条件的文件名,通配符是完全匹配.ls.find.cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配. 基础正则表达式: *    前一个字符

【转】十分有用的linux shell学习总结

在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化.我们 数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题.因此这段时间总结的有关Linux Shell的系列博客就给予了我极大的帮助,然而在实际的使用中却发现,有的时候确实忘记了某个技术点或某个Shell命令的使用方式曾经在哪一篇博客中 予以了说明,所以不得不多次点击多篇博客,直到找到想要那篇的为止,鉴于此,为了方便我们每个人的查阅,这里特别给出了前十二篇系列博客的目录以供大家参 阅和查

第四章 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

shell之文本过滤(正则表达式)

shell之文本过滤(正则表达式) 分类: linux shell脚本学习2012-09-14 12:59 213人阅读 评论(0) 收藏 举报 当从一个文件或命令输出中抽取或过滤文本时,可以使用正则表达式(R E) ,正则表达式是一些特殊或不很特殊的字符串模式的集合. ^ 只只匹配行首$ 只只匹配行尾* 只一个单字符后紧跟*,匹配0个或多个此单字符[ ] 只匹配[ ] 内字符.可以是一个单字符,也可以是字符序列.可以使用 -表示[ ]内字符序列范围,如用 [ 1 - 5 ]代替[ 1 2 3

问题:关于正则表达式和通配符的问题,求解答

遇到一个关于通配符的问题.在shell下使用通配符匹配时,只有tmp被匹配出来了,其他文件名都要用正则,实在不知道为啥,谁知道,求解? 问题:关于正则表达式和通配符的问题,求解答

shell学习之路:shell基础大全2

原文:http://note.youdao.com/share/?id=cd2ad6e6d5db2b347f92958efc2bdbc1&type=note 正则表达式与通配符: 一.介绍: 1.正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式 2.通配符用来匹配符合条件的文件名,通配符是完全匹配,ls.find.cp这些命令不支持正则表达式,所以只能用使用shell自己的通配符来进行匹配了. 二.基础正则表达式: grep "