正则表达式是包含匹配,通配符是完全匹配

基础正则表达式

test.txt示例文件

1
2
3
4
5
6
7
8
9
10
11
12
Mr. James said:
he was the honest man in Companyy.
123despire him.
 
But since Miss.Mary came,
she never saaaid thoes words.
5555nice!
 
because ,actuaaaaally,
Mr.James is the most honest man!
 
Later,Miss Mary soid her hot body.

1、*符号的使用(“ *”前一个字符匹配0次,或任意多次)
1
2
3
4
5
6
7
8
9
grep "a*" test_rule.txt
#匹配所有内容,包括空白行
grep "aa*" test_rule.txt
#匹配至少包含有一个a的行
grep "aaa*" test_rule.txt
匹配最少包含两个连续a的字符串
grep "aaaaa*" test_rule.txt
#则会匹配最少包含四个个连续a的字符串

2、.符号的使用(“ .” 匹配除了换行符外任意一个字符)

1
2
3
4
5
6
7
grep "s..d" test_rule.txt
#“ s..d”会匹配在s和d这两个字母之间一定有两个字符的单词
grep "s.*d" test_rule.txt
#匹配在s和d字母之间有任意字符
grep ".*" test_rule.txt
#匹配所有内容

3、“ ^”匹配行首,“ $”匹配行尾

1
2
3
4
5
6
grep "^M" test_rule.txt
#匹配以大写“ M”开头的行
grep "n$" test_rule.txt
#匹配以小写“ n”结尾的行
grep -n "^$" test_rule.txt
#会匹配空白行

4、“ []” 匹配中括号中指定的任意一个字符,只匹配一个字符

1
2
3
4
5
6
grep "s[ao]id" test_rule.txt
#匹配s和i字母中,要不是a、要不是o
grep "[0-9]" test_rule.txt
#匹配任意一个数字
grep "^[a-z]" test_rule.txt
#匹配用小写字母开头的行

5、“ [^]” 匹配除中括号的字符以外的任意一个字符

1
2
3
4
grep "^[^a-z]" test_rule.txt
#匹配不用小写字母开头的行
grep "^[^a-zA-Z]" test_rule.txt
#匹配不用字母开头的行

6、“ \” 转义符

1
2
grep "\.$" test_rule.txt
#匹配使用“ .”结尾的行

7、“ \{n\}”表示其前面的字符恰好出现n次

1
2
3
4
grep "a\{3\}" test_rule.txt
#匹配a字母连续出现三次的字符串
grep "[0-9]\{3\}" test_rule.txt
#匹配包含连续的三个数字的字符串

8、“ \{n,\}”表示其前面的字符出现不小于n次

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

9、“ \{n,m\}”匹配其前面的字符至少出现n次,最多出现m次

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

Shell命令_正则表达式的更多相关文章

  1. Shell命令_文件系统常用命令df、du

    一.df(文件系统查看命令) [root@localhost ~]# df [选项] [挂载点] 选项: -a 显示所有的文件系统信息,包括特殊文件系统,如 /proc. /sysfs -h 使用习惯 ...

  2. * 和 ?在 shell 命令行中与在正则表达式中的区别

    Linux 正则表达式 你有没有想过,在 shell 命令行中的 *,?和正则表达式中的*,?是否一样? 自打好多年前接触 DOS,就知道了* 和?这两个通配符(Wildcard),象 dir *.* ...

  3. Linux学习——shell编程之正则表达式和字符处理命令

    shell编程之正则表达式 一 正则表达式 1 什么是正则表达式 正则表达式用于描述字符排列和匹配模式的一种语法规则.它主要用于字符串的模式分隔.匹配.查找及替换操作. 2 shell编程之正则表达式 ...

  4. 正则表达式小结,数据预处理中常用的shell命令

    数据预处理中,这部分命令非常有用. 不需要编写代码,直接通过shell脚本通常就能修改文件格式.有时候sed和awk联合几乎能实现所有功能. 管道命令 | 重定向命令>,2>,>&g ...

  5. 任督二脉之Shell中的正则表达式

    VBird说学习Linux,掌握了Shell和正则就相当于打通了任督二脉,此后能力的成长才会突飞猛进. Shell的基础学习之前已经总结了一篇博客:http://www.cnblogs.com/jyz ...

  6. 数据分析常用shell命令

    目录 0.vim编辑器 1.awk命令(重要) 1.1 基本语法 1.2 基本用法 1.3 运算符 1.4 内建变量 1.5 其他 1.6 awk是一门变成语言,支持条件判断.数组.循环等功能.所以我 ...

  7. Shell命令和流程控制

    Shell命令和流程控制 在shell脚本中可以使用三类命令: 1)Unix 命令: 虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令.这些命令通常是用来进行文件和文字 ...

  8. Android Java执行Shell命令

    最新内容建议直接访问原文:http://www.trinea.cn/android/android-java-execute-shell-commands/ 主要介绍Android或Java应用中如何 ...

  9. bash shell命令(2)

    在上篇<bash shell命令(1)>中,介绍了几种简单的linux shell命令,今天继续介绍bash shell命令 本文地址:http://www.cnblogs.com/arc ...

随机推荐

  1. 2014 UESTC暑前集训动态规划专题解题报告

    A.爱管闲事 http://www.cnblogs.com/whatbeg/p/3762733.html B.轻音乐同好会 C.温泉旅馆 http://www.cnblogs.com/whatbeg/ ...

  2. javascript删除元素节点

    1.删除元素父节点 function removeElement(_element){ var _parentElement = _element.parentNode; if(_parentElem ...

  3. JS获取当前页面的URL信息

    设置或获取对象指定的文件名或路径. <script> alert(window.location.pathname) </script> 设置或获取整个 URL 为字符串. & ...

  4. Oracle过程及函数的参数模式,In、out、in out模式

    Oracle过程及函数的参数模式 In.out.in out模式 在Oracle中过程与函数都可以有参数,参数的类型可以指定为in.out.in out三种模式. 三种参数的具体说明,如下图所示: ( ...

  5. BZOJ 2818: Gcd

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 4443  Solved: 1960[Submit][Status][Discuss ...

  6. sudo命令使用的几个场景

    在linux系统下,普通用户无法直接执行root用户权限下的命令,如果想让普通用户执行只有root用户才能执行的操作命令.下面罗列下经常使用sudo命令的几个场景: 1.用户无权限执行root命令普通 ...

  7. linux下DHCP服务原理总结

    DHCP(全称Dynamic host configuration protocol):动态主机配置协议DHCP工作在OSI的应用层,可以帮助计算机从指定的DHCP服务器获取配置信息的协议.(主要包括 ...

  8. sqlserver 通用分页存储过程

    来源:http://www.jb51.net/article/19936.htm CREATE PROCEDURE commonPagination ), --要显示的列名,用逗号隔开 ), --要查 ...

  9. 用C++11的std::async代替线程的创建

    c++11中增加了线程,使得我们可以非常方便的创建线程,它的基本用法是这样的: void f(int n); std::thread t(f, n + 1); t.join(); 但是线程毕竟是属于比 ...

  10. 单例模式的两种实现方式对比:DCL (double check idiom)双重检查 和 lazy initialization holder class(静态内部类)

    首先这两种方式都是延迟初始化机制,就是当要用到的时候再去初始化. 但是Effective Java书中说过:除非绝对必要,否则就不要这么做. 1. DCL (double checked lockin ...