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

  

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

  1. 1116Xlinux初学习之正则表达式和通配符

    一.正则表达式: 元字符是用来阐释字符表达式意义的字符,简言之,就是用来描述字符的字符. 正则表达式RE(Regular Expression)是由一串字符和元字符构成的字符串. 正则表达式的主要功能 ...

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

    ----------------------------------------------------------------------------------------- 正则表达式与通配符: ...

  3. Shell学习笔记 - 正则表达式

    一.正则表达式是什么? 正则表达式是用于描述字符排列和匹配模式的一种语法规则.它主要用于字符串的模式分割.匹配.查找及替换操作. 二.正则表达式与通配符 1. 正则表达式 用来在文件中匹配符合条件的字 ...

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

    原文:http://note.youdao.com/share/?id=cd2ad6e6d5db2b347f92958efc2bdbc1&type=note 正则表达式与通配符: 一.介绍: ...

  5. shell学习笔记

    shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...

  6. shell编程值之正则表达式与字符截取(6)

    正则表达式与通配符 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式 通配符用来匹配符合条件的文件名,通配符是完全匹配.ls.find.cp ...

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

    shell之文本过滤(正则表达式) 分类: linux shell脚本学习2012-09-14 12:59 213人阅读 评论(0) 收藏 举报 当从一个文件或命令输出中抽取或过滤文本时,可以使用正则 ...

  8. SHELL学习笔记三

    SHELL学习笔记一 SHELL学习笔记二 SHELL学习笔记三 for 命令 读取列表中的复杂值 从变量读取列表 从命令读取值 更改字段分隔符 用通配符读取目录 which 使用多个测试命令 unt ...

  9. shell及脚本3——正则表达式

    一.正则表达式 1.1. 什么是正则表达式 正则表达式是处理字符串的方法,以行为单位,通过一些特殊符号的辅助,让用户可以轻易进行查找.删除.替换某特定字符串的操作. 1.2. 正则表达式与通配符的区别 ...

随机推荐

  1. Oracle11g 新功能

    本文来源:<oacle11g 从入门到精通> 明日科技 Oracle11g 新功能 1:增强信息生命周期管理和储存管理能力 2:全面回忆数据变化 3:最大限度提高信息可用性 4:Oracl ...

  2. Confluence 6 H2 数据库连接与合并整合

    使用 H2 console 连接到你嵌入的 H2 数据库 可以选的,你可以使用 H2 console 来连接到你的 H2 数据库.最简单的访问 Console 的方法是双击 H2 数据库的 jar 文 ...

  3. Confluence 6 安装 PostgreSQL

    如果你的系统中还没有安装 PostgreSQL 数据库,你需要先下载后进行安装. 在安装 PostgreSQL 时候的一些小经验: 在安装的时候提供的 密码(password )是针对  'postg ...

  4. laravel 里面结合关联查询 的when()用法

    Laravel 5.6 里面的when用法: $name = $request->get('name'); //活动标题 $start_time = $request->get('star ...

  5. Tmk吃汤饭

    问题 : Tmk吃汤饭 时间限制: 1 Sec  内存限制: 128 MB 题目描述 Tmk喜欢吃汤饭! Tmk喜欢吃汤饭!! Tmk喜欢吃汤饭!!! 汤饭窗口分点餐和取餐两个窗口,一位蜀黍负责点餐窗 ...

  6. vue中Axios的封装和API接口的管理

    前端小白的声明: 这篇文章为转载:主要是为了方便自己查阅学习.如果对原博主造成侵犯,我会立即删除. 转载地址:点击查看 如图,面对一团糟代码的你~~~真的想说,What F~U~C~K!!! 回归正题 ...

  7. JavaScript实现的抛物线运动效果

    css88 技术文档地址: http://www.css88.com/archives/5355 张鑫旭 技术文档地址: https://www.zhangxinxu.com 使用示例: 使用时直接引 ...

  8. python面向对象三大特性之封装

    一. 概述 定义:隐藏对象的属性和实现细节,仅对外提供公共访问方式 封装的原则:把不需要对外提供的内容都隐藏起来,提供公共的方法访问这些隐藏属性 二.封装手段 使用双下划线将属性和方法隐藏起来 cla ...

  9. Git的常见基础操作命令

    Git的常见基础操作命令 1安装初始化 1.1安装git本地安装Windows版本 下载地址: https://git-scm.com/downloads/ 1.2初始化Git用户信息配置 配置git ...

  10. Visual Studio上编译ncnn

    prerequisite 是为了在PC上熟悉ncnn的基本代码,所以用Visual Studio来配置的. 期间用过VS2013(update5)/VS2015/VS2017,反正都是基于CMake生 ...