一.linux文本查找命令

在说linux正规表达式之前,还介绍下linux中查找文本文件常用的三个命令:

1.grep : 最早的文本匹配程序,使用POSIX定义的基本正则表达式(BRE)来匹配文本。

2.egrep : 扩展式grep,其使用扩展式正规表达式(ERE)来匹配文本。

3.fgrep : 快速grep,这个版本匹配固定字符串而非正则表达式。并且是唯一可以并行匹配多个字符串的版本。

如下简单的介绍grep命令:

语法格式:

grep [options ...] pattern-spec [files ...]

用途:

匹配一个或多个模式的文本行。

options:

-E : 使用扩展正则表达式进行匹配, grep -E 或取代 egrep 命令。

-F : 使用固定字符串进行匹配, grep -F 或取代传统的fgrep命令。

-e : 通常第一个非选项的参数认为是要匹配的模式,也可以同时提供多个模式,只要将其放入单引号,并用换行字符分隔他们。

模式以减号开头时,为防止混淆其为选项,-e选项说明其后的参数为模式,即使他以减号开头。

-f : 从pat-file文件读取模式作为匹配。

-i : 模式匹配时忽略大小写差异。

-l : 列出匹配模式的文件名称,而不是打印匹配的行。

-q : 静默的,如果匹配成功,不将匹配的行输出到标准输出;否则即是不成功。

-s : 不显示错误信息,通常与-q并用。

-v : 显示不匹配模式的行。

说明:可以同时查找多个文件中的内容,当指定多个文件时,每个显示出的文件行前会有文件名加一个冒号标识其来自哪个文件。

可以使用多个-e 或 -f 选项,建立要查找的模式列表。

二.正则表达式简要介绍

1.正则表达式的组成

(1).一般字符:没有特殊意义的字符

(2).特殊字符(meta字符):元字符,有在正则表达式中有特殊意义

2.如下讲下正则表达式中的常见meta字符

(1).POSIX BRE与ERE中都有的meta字符:

\   :  通常用于打开或关闭后续字符的特殊含义,如\(...\)与\{...\}

.   :   匹配任何单个字符(除NUL)

*  :   匹配其前的任何数目或没有的单个字符,例: . 表示任一字符, 则 .* 匹配任一字符的任意长度

^  :   匹配紧接着的正则表达式,BRE中仅在正则表达式的开头有特殊的含义,ERE中在任何位置都有特殊含义

$  :   匹配前面的正则表达式,在字符串或者行结尾处。BRE中仅在正则表达式的结尾处有特殊的含义,ERE中在任何位置都有特殊含义

[]  :   匹配方括号内的任一字符,其中可用连字符(-)指的连续字符的范围;^符号苦出现在方括号的第一个位置,则表示匹配不在列表中的任一字符,

(2).POSIX BRE中才有的字符:

\{n,m\} : 区间表达式,匹配在它前面的单个字符重现的次数区别。\{n\}指重现n次;\{n,m\}指重现n至m次;

\( \) : 保留空间,可以将最多9个独立的子模式存储在单个模式中。如\(ab\).*\1 : 指匹配ab组合的两次重现,中间可存在任意数目的字符。

\n : 重复在\(与\)方括号内第n个子模式至此点的模式。

(3).POSIX ERE中才有的字符:

{n,m} : 与BRE的\{n,m\}功能相同

+ : 匹配前面正则表达式的一个或多个扩展

? : 匹配前面正则表达式的零个或一个扩展

| : 匹配|符号前或后的正则表达式

( ) : 匹配方括号括起来的正则表达式群

(4). 方括号([])表达式

4.1.字符集  [:  :]

标识字符集,有如下几种:

[::alnum] : 数字字符

[:digit:] : 数字字符

[:punct:] : 标点符号字符

[:alpha:] : 字母字符

[:graph:] : 非空格字符

[:space:] : 空格字符

[:blank:] : 空格与定位字符

[:lower:] : 小写字母字符

[:upper:] : 大写字母字符

[:cntrl:] : 控制字符

[:print:] : 可显示的字符

[:xdigit:] : 16进制数字

4.2.排序符号

指将多个字符视为一个符号,如[.ch.]即将ch视为一个符号

4.3.等价字符

认为多个字符相等,如[=e=]在法文的locale里,可匹配于多种与e相似的字符,此处不再列出。

说明:这三种构造除其自身的方括号之外,还必须使用额外的方括号括起来。

例 : [[:alpha:]!] : 匹配任一英文字母或感叹号。

[[.ch.] : 匹配ch排序元素,而不匹配单独的字母c或h.

3.简单正规表达式匹配案例

china  :  匹配此行中任意位置有china字符的行

^china : 匹配此以china开关的行

china$ : 匹配以china结尾的行

^china$ : 匹配仅有china五个字符的行

[Cc]hina : 匹配含有China或china的行

Ch.na : 匹配包含Ch两字母并且其后紧跟一个任意字符之后又有na两个字符的行

Ch.*na : 匹配一行中含Ch字符,并且其后跟0个或者多个字符,再继续跟na两字符

二.实例

如下通过常用实例来学习BRE和ERE匹配,源文件url.txt内容如下:

www.baidu.com

http://www.baidu.com

https://www.baidu.com

http://wwwbaiducom

baidu.com

baidu

1.url匹配

匹配以http或者https开头,并且其后为:并且含有.的串

BRE匹配:

grep '^https\{0,1\}.*\..*' url.txt

ERE匹配:

grep -E '^https?.*\..*' url.txt

匹配结果如下:

http://www.baidu.com

https://www.baidu.com

2.Email匹配

示例文件内容为:

hfutwyy@qq.com

aaaa@

aaa@.com

aaa@gmail.com

@@baidu.com

匹配以字母数字或者下划线开头的多个字符,其后有一个@之后有多个字母数字或者下划线,其中有一个.号

grep '^[[:alpha:][:digit:]_]*@[[:alpha:][:digit:]]*\..*' email.txt

匹配结果:

hfutwyy@qq.com

aaa@.com

aaa@gmail.com

先到这里,后续再接着写。

linux 正则查找email_Linux 正则表达式详解相关推荐

  1. linux find 按类型查找,Linux find查找find命令详解

    玩蛇网推荐图文教程:python 列表 Linux命令有很多,今天要介绍的是常用的基础命令中的find命令.find是Linux系统管理员所喜爱用的必备工具命令之一,它的作用是可以很轻松地找到你想要的 ...

  2. linux 正则查找email_Linux生产环境上,最常用的一套“Sed“技巧

    sed命令应用广泛,使用简单,是快速文本处理的利器.它其实没多少技巧,背诵.使用是最合适的学习渠道,属于硬技能.但它又很复杂,因为高级功能太多.本篇不去关注sed的高级功能,仅对常用的一些操作,进行说 ...

  3. python正则匹配_python 正则表达式详解

    正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能 ...

  4. python正则匹配_Python正则表达式详解

    正则表达式,又称规则表达式(Regular Expression),是使用单个字符串来描述.匹配某个句法规则的字符串,常被用来检索.替换那些符合某个模式(规则)的文本.最初的正则表达式出现于理论计算机 ...

  5. Linux 搜索 查找find命令 详解

    查找文件 find ./ -type f查找目录 find ./ -type d查找名字为test的文件或目录 find ./ -name test查找名字符合正则表达式的文件,注意前面的'.*'(查 ...

  6. Linux基础(十一)--Linux文件查找命令Find详解

    本文详细介绍了Linux中Find命令的相关知识 在文件系统中,我们常常会去查找某个文件,而在Linux中locate和find都是用于查找文件的. 其中locate命令是非实时查找,它会根据数据库进 ...

  7. Linux进程查找命令pgrep详解

    pgrep是linux中常用的通过程序名字来查询进程的命令. 一般用来查找正在运行进程的PID信息. 常用选项: 默认只显示PID -l 同时显示进程名和PID -o 当匹配多个进程时,显示进程号最小 ...

  8. Linux中的shell正则表达式详解

    Shell中使用正则表达式处理文本的命令有如下工具: 命令 描述 grep 默认不支持扩展表达式,加-E选项开启ERE.如果不加-E,此时使用花括号时要加转义符:\{\} egrep 支持基础和扩展表 ...

  9. Linux 执行文件查找命令 which 详解

    某个文件不知道放在哪里了,通常可以使用下面的一些命令来查找: which  查看可执行文件的位置 whereis 查看文件的位置 locate   配合数据库查看文件位置 find   实际搜寻硬盘查 ...

最新文章

  1. SLAM架构的两篇顶会论文解析
  2. Android中悬浮窗口的实现原理和示例代码
  3. TreeSet的定制排序
  4. linux手机远程桌面连接软件下载,HomeCenter手机远程桌面下载_HomeCenter手机远程桌面官方下载-太平洋下载中心...
  5. 在python中可以用什么关键字来声明一个类_3. Python基础语法
  6. python web开发,organization的model设计
  7. [转载] 用python统计中文字符数_使用Python统计字符串中各种字符的个数
  8. 新手小白之学习python一飞冲天日志之—基本数据类型,条件控制语句
  9. 阿里B2B技术架构演进详解 一篇创业者必须收藏的文章
  10. ntoskrnl.exe蓝屏
  11. 高新技术企业都需要准备哪些资料
  12. html 常用标签、特殊符号
  13. 等级保护二、三、四级内容及对比
  14. mac pdf去水印_PDF水印工具Mac版
  15. 什么是 Substrate
  16. 0.99M,150FPS,移动端超轻量目标检测算法PP-PicoDet来了!
  17. 如何在论文中画出漂亮的插图?
  18. html文件必须由特定的程序进行编译和执行才能显示,这种编译器就是,HTML 文件必须由特定的程序进行编译和执行才能显示, 这种编译器就是()....
  19. 8、spss做因子分析及主成分分析
  20. (C语言)输入一行字符,将此字符串中最长的单词输出。

热门文章

  1. 关于Transformer,面试官们都怎么问?
  2. 厉害了!Python+matplotlib制作8个排序算法的动画
  3. 深度学习笔记 第四门课 卷积神经网络 第四周 特殊应用:人脸识别和神经风格转换...
  4. 推荐Datawhale整理的秋招求职攻略
  5. JDATA绝对语义识别挑战大赛-季军方案
  6. 网易云信深度优化解决移动聊天室“痼疾”
  7. 为什么互联网能创造商业奇迹——我的互联网产品观
  8. 查看计算机CPU、内存使用情况
  9. 关于眼界、眼光、眼前的哪些....
  10. C++ STL学习之容器set和multiset (补充材料)