grep【global regular expression print】        print lines matching a pattern

grep [options] regex [file...]

regex 是指一个正则表达式

grep选项列表:

-i          忽略大小写--ignore-case

-v          invert match

-c          打印匹配的数量,而不是文本行本身--count

-l          打印包含匹配项的文件名,而不是文本行本身 --files-with-matches      

-L          相似于-l 选项,但是只是打印不包含匹配项的文件名--files-without-match

-n          打印相应的行号--line-number

-h          应用于多文件搜索,不输出文件名--no-filename

  • 元义字符和原字符

^ $ . [ ] { } - ? * + ( ) | \
注意:正如我们所见到的,当 shell 执行展开的时候,许多正则表达式元字符,也是对 shell 有特殊 含义的字符。把元字符用引号引起来至关重要, 这样可以阻止 shell 试图展开它们。

.        匹配在此位置的任意一个字符
^        锚点,行开头
$        锚点,行结尾
[***]      字符集合,元字符被放置到中括号里面后会失去了它们的特殊含义。^表示否定,-表示范围。

注意:
  • 要包含-:可将-放在开头[-***]
  • 字典顺序和ASCII 顺序不同,[A-Z]不总是工作【查看LANG变量】
  • POSIX字符集

[:alnum:]          字符数字字符,在ASCII中等价于[A-Za-z0-9]

[:word:]           增加了下划线

[:alpha:]          字母字符

[:blank:]          包含空格和tab

[:cntrl:]          ASCII的控制码,0-31,127

[:digit:]          0-9

[:graph:]          可视字符,33-126

[:lower:]          小写字母

[:punct:]          标点符号字符

[:print:]          可打印字符,在[:graph:]中的所有字符,再加上空格字符。

[:space:]          在 ASCII 中, 等价于[ \t\r\n\v\f]

[:upper:]          大写字母

[:xdigit:]          表示十六进制数字的字符

locale命令,查看locale操作。

  • POSIX基本的 Vs.扩展的正则表达式

BRE:

可以识别 ^ $ . [ ] *

字符“(”,“)”,“{”,和 “}”用反斜杠转义后,被看作是元字符

ERE:

添加了 ( ) { } ? + |

在任意元字符之前加上反斜杠会导致其被看作是一个文本字符

  • egrep 【grep -E】

echo "AAA" | grep -E 'AAA|BBB|CCC'

为了把 alternation 和其它正则表达式元素结合起来,我们可以使用()来分离 alternation。

grep -Eh '^(bz|gz|zip)' dirlist*.txt

  • 限定符

?          匹配零个或者一个元素

eg:^\(?[0-9][0-9][0-9]\)?  [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$

通常圆括号都是元字符(在 ERE 中),所以我们在圆括号之前加上了反斜杠,使它们成为文本字符

*          匹配零个或多个元素

[[:upper:]][[:upper:][:lower:] ]*.

+          匹配一个或多个元素

^([[:alpha:]]+ ?)+$

{}          匹配特定个数的元素

{n} n次, {n,m} n到m次, {n,}大于等于n次, {,m}小于等于m次

  • find

find . -regex '.*[^-\_./0-9a-zA-Z].*'

注意:

当某一行包含的字符串匹配上了一个表达式的时候,grep 命令会打印出这一行

find 命令要求路径名精确地匹配这个正则表达式

  • locate查找文件

locate 程序支持基本的(--regexp 选项)和扩展的(--regex 选项)正则表达式

  • 在less和vim中查找文本

vim 支持基本的正则表达式

在扩展表达式中,许多被认为是元字符的字符在基本的表达式中被看作是文本字符,

只有用反斜杠把它们转义之后,它们才被看作是元字符。

正则表达式【TLCL】的更多相关文章

  1. JS正则表达式常用总结

    正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...

  2. Python高手之路【五】python基础之正则表达式

    下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...

  3. C# 正则表达式大全

    文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...

  4. C#基础篇 - 正则表达式入门

    1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...

  5. JavaScript正则表达式,你真的知道?

    一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...

  6. Python 正则表达式入门(中级篇)

    Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...

  7. 【JS基础】正则表达式

    正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*)表示连续空格的字符串. []是定义匹配的字符范围.比如 [a-zA-Z ...

  8. JavaScript 正则表达式语法

    定义 JavaScript定义正则表达式有两种方法. 1.RegExp构造函数 var pattern = new RegExp("[bc]at","i"); ...

  9. [jquery]jquery正则表达式验证(手机号、身份证号、中文名称)

    数字判断方法:isNaN()函数 test()方法 判断字符串中是否匹配到正则表达式内容,返回的是boolean值 ( true / false ) // 验证中文名称 function isChin ...

随机推荐

  1. zoj3497(经典矩阵乘法)

    原以为是用搜索做的题,想了好久都无法想到一个高效正确的解法. 后面发现竟然这就是矩阵的应用! 碉堡! 给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值  ——选自ma ...

  2. begin.BZOJ 1383: 三取方格数

    题目链接:传送门 题目大意:给你一个矩阵,每个格子有一个值,现在你要从左上角走到右下角(走3次),使得经过路径的权值和最大. 每个格子的值只能取一次,取完后变为0,输出走完三次后最大的权值和. 题目思 ...

  3. AngularJS 讲解,三 过滤器

    过滤器用来格式化需要展示给用户的数据.AngularJS有很多实用的内置过滤器,同时也提供了方便的途径可以自己创建过滤器. 在HTML中的模板绑定符号{{ }}内通过|符号来调用过滤器.例如:{{va ...

  4. 【BZOJ2324】[ZJOI2011]营救皮卡丘 有上下界费用流

    [BZOJ2324][ZJOI2011]营救皮卡丘 Description 皮卡丘被火箭队用邪恶的计谋抢走了!这三个坏家伙还给小智留下了赤果果的挑衅!为了皮卡丘,也为了正义,小智和他的朋友们义不容辞的 ...

  5. 160714、解决虚拟机上的tomcat无法被主机访问的问题

    备注:我虚拟机是centos 6.5    在wmware中安装linux后安装好数据库,JDK及tomcat后启动服务,虚拟机中可以访问,但是主机却无法访问,但是同时主机和虚拟机之间可以ping的通 ...

  6. Powershell Get-ChildItem 筛选文件,文件处理

    使用Where-Object也可以根据其它属性来过滤. Dir | Where-Object { $_.CreationTime -gt [datetime]::Parse("May 12, ...

  7. ZooKeeper 基本介绍

    Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储, Zookeeper 作用主要是用来维护和监控存储的数 ...

  8. xml与java对象转换 -- XStreamAlias

    @XStreamAlias使用 一. 特点: 简化的API; 无映射文件; 高性能,低内存占用; 整洁的XML; 不需要修改对象;支持内部私有字段,不需要setter/getter方法 提供序列化接口 ...

  9. unity 里调试native code

    因项目需要,需要调试dll工程代码. 把生成的debug dll和pdb拷贝进unity的plugins工程,遇到 断点无法进入,修改下调试信息格式,OK.

  10. 11.Query an Array of Embedded Documents-官方文档摘录

    总结 1.插入数据 db.inventory.insertMany( [ { item: "journal", instock: [ { warehouse: "A&qu ...