正则表达式:

定义:

是一些字符或是特殊字符串模式的集合。

功能:根据模式搜索文本,并将符合模式的文本行显示出来。

Pattern(模式):

文本字符和正则表达式的元字符组合而成匹配条件

grep:

grep简介

grep(globalsearch regular RE) < /span>andprintoutthe line,全面搜索正则表达式并把行打印出来

是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。

egrep是grep的扩展,支持更多的RE元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符

表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

grep是很常见也很常用的命令,它最重要的功能就是进行字符串数据的比较,然后将符合用户要求的字符串显示出来。

在这里需要说明的是,grep在数据中查找一个字符串时,是以”整行“为单位来进行数据选取的。也就是说,假如一个文件内有10行,其中有两行具有

所搜索的字符串,则将那两行显示在屏幕上,其它则丢去。

注:默认情况下正则表达式工作在贪婪模式下

grep [options] PATTERN [FILE...]

-a:在二进制文件夹中,以文本文件的方式搜索数据。

-i:忽略大小写

--color:将匹配的字符串以颜色基于现实

-v:反向查询,即显示出没有被‘搜索字符串’内容的哪一行

-o:只显示被模式匹配的字符串

grep -o'root'/etc/passwd

root

....

-n:输出行号

-c:计算找到‘搜索字符串’的次数

-A:# 匹配结果并将匹配结果的后#行一并显示

-B: # 匹配结果并将匹配结果的前#行一并显示

-C:Aandb  显示匹配结果前和后各几行。

正则表达式就是里面有一些元字符,这些字符不表示它本身的意思,而表示通配的意义。

介绍grep进行文件搜索时所用到的云字符并加以介绍

搜索特定字符串、利用[]来搜索集合字符、任意一个字符(.)与重复字符(*)、

行首与行尾字符^$、限定连接重复字符范围{}、位置锚定、组

下面我们就来一起学习元字符的含义:

^ : 锚定行首

例如:

'^root':表示以root作为行首进行查找

$ : 锚定行尾

例如:

'nologin$':表示查找以nologin结尾所匹配的行

. : 匹配任意单个字符

例如:

'r..t':表示查找以r开头,t结尾并且中间存在两个字符匹配的行

* : 一个单字符后紧跟*,匹配0个或多个此单字符

例如:

'ok*':表示以o为开头后面可以没有k个字符,也可以出现多次

.*: 任意字符

例如:

'root.*':表示查找以root开头后面跟任意字符所匹配的行

[]:匹配[]内字符序列范围

例如:

'[a-z]'表示匹配[]任意一个小写字母

[^]:匹配[]内以外的字符串

例如:

'[^root]':表示除root以外的行

^$:显示空白行

例如:

'^$':表示以空白行作为模式并显示匹配的行

\<:>

例如:

'\

\>: 其前面的任意string必须作为单词尾部出现

例如:

'nologin\>':表示查找以root作为模式而且必须出现在行尾

\: 以string为整体并进行对文本文件进行查找

例如:

'\':表示以root为单词并进行搜索

\(\):分组

例如:

\(ab\)*:把ab当作整体,ab可以出现0次,1次,或多次

\(\)\1:引用第一个左括号以及与之对应的右括号所包括的所有内容

\2:

\3:

例如:

\(ab\)\1:表示以ab为以个整体显示,并引用前面ab字符串显示出来

\ :用来注释一个元字符的特殊含义。因为有在shell中一些元字符有特殊含义。

例如:

'\/'表示查找以'/'作为模式进行查找

pattern\{m\}:用来匹配前面pattern出现n次

例如:

'root\{2\}:表示匹配root字符串而且必须出现2次

pattern\{m, \}:用来匹配前面pattern至少m次,多则不限

例如:'root\{1, \}:表示至少出现1次root,多则不限

pattern\{m,n\}:用来匹配前面pattern至少m次,至多n次

例如:

'root\{1, 2\}:表示至少出现1次root,至多2次

EGREP:

egrep和grep -E的元字符扩展集

+:匹配一个或多个先前的字符。如:'[a-z]+able',匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等。

?:匹配零个或多个先前的字符。如:'gr?p'匹配gr后跟一个或没有字符,然后是p的行。

a|b|c:匹配a或b或c。如:grep|sed匹配grep或sed

():分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。

x{m},x{m,},x{m,n}:作用同x\{m\},x\{m,\},x\{m,n\}

POSIX字符类:

[[:space:]]:所有空格字符

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

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

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

[[:digit:]]:数字

[[:alnum:]]:数字和大小写字母

sed基本用法:

sed(Stream EDitor):它是一种流编辑器

sed:文本编辑器,而不是字处理器,只是操作纯ASCII码文本的,其次它在操作文本的时候,是按行进行的,逐行进行。

sed的主要功能是实现逐行处理文本的,所以我们称它为行编辑器。

sed的处理机制:

每当处理一个文本文件时,它不会直接编辑文本文件的本身,而是将文本文件的内容逐行读取到内存空间里,而后在内存空间里完成编辑工作,随后将编辑出的结

果以标准输出显示到屏幕上。

我们称这个内存空间成为模式空间。

sed: 模式空间

默认不编辑原文本文件本身,仅对模式空间中的数据做处理;而后将处理结束后,将模式空间打印至屏幕。

sed [options]'AddressCommand'file ...

-n: 静默模式,不再默认显示模式空间中的内容,只显示符合条件的行。

-i: 直接修改原文件

-e SCRIPT -e SCRIPT:可以同时执行多个脚本

-f /PATH/TO/SED_SCRIPT

sed -f /path/to/scripts  file

-r: 表示使用扩展正则表达式

Address:

1、StartLine,EndLine

比如1,10,表示第一行到第10行

$:表示最后一行

$-1:表示倒数第二行

2、/RegExp/:支持正则表达式

/^root/

3、/pattern1/,/pattern2/

第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行

4、LineNumber

指定的行

5、StartLine, +N

从startLine开始,向后的N行;

'1.+2':

Command:

d: 删除符合条件的行;

Forexample:删除/etc/inittab文件中1到10行的内容

# sed'1,10d'/etc/inittab

Forexample:删除/etc/passwd文件中包括hdoop的行

# sed'/hdoop/d'/etc/passwd

p: 显示符合条件的行;

Forexample:显示/etc/passwd文件中以hdoop开头的行

# sed'/^hdoop/p'/etc/passwd

a \string: 在指定的行后面追加新行,内容为string

Forexample:显示/etc/passwd文件中以hdoop开头的行后面追加“I am hdoop”

# sed '/^hdoop/a \I am hdoop /etc/passwd

如果想加两行的话,我可以使用换行符 \n:可以用于换行

i \string: 在指定的行前面添加新行,内容为string

Forexample:显示/etc/passwd文件中以hdoop开头的行前面追加“I am hdoop”

# sed'/^hdoop/i \I am hdoop'/etc/passwd

r FILE: 将指定的文件的内容添加至符合条件的行处

Forexample:在/etc/passwd文件中第二行后面追加/etc/inittab文件中的内容

# sed '2r /etc/inittab /etc/passwd 即可:

如果是在指定第一行和第二行后面添加指定文件内容的行

# sed '1,2r /etc/inittab /etc/passwd

w FILE: 将地址指定的范围内的行另存至指定的文件中;

Forexample:在/etc/passwd文件中以hdoop开头的行保存至/tmp/hdoop.bak

# sed'/^hdoop/w /tmp/hdoop.bak'/etc/passwd

s/pattern/string/修饰符: 查找并替换,默认只替换每行中第一次被模式匹配到的字符串

Forexample:查找/etc/passwd文件中hdoop字符换成大写的hoop

# sed's/hdoop/HDOOP/'/etc/passwd

修饰符

g: 全局替换

i: 查找时忽略字符大小写

\(\), \1, \2

Forexample:将下面的like修改为liker,love修改为lover

l..e:like-->liker

love-->lover

# sed's#\(l..k\)#\1r#g'/tmp/text

# sed's#l..k#&r#g'/tmp/text

&: 引用模式匹配整个串

Forexample:将下面的小写l换成大小l

like-->Like

love-->Love

# sed's#l\(..e\)#L\1#g'sed.text

grep和sed命令的使用,就先告一段落,以上内容会陆续进行添减,敬请关注:

linux 重复模式元字符,正则表达式(grep)元字符及模式匹配的介绍及sed高级应用选项...相关推荐

  1. linux 重复模式元字符,Linux 正则表达式 vi, grep, sed, awk

    \> 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行. x\{m\} 重复字符x,m次,如:'o\{5\}'匹配包含5个o的行. x\{m,\} 重复字符x,至少m次, ...

  2. 学习 Linux,101: 使用正则表达式搜索文本文件

    学习 Linux,101: 使用正则表达式搜索文本文件 概述 本文深入介绍基础的 Linux 进程管理技术.您将学习如何: 创建简单的正则表达式 使用正则表达式搜索文件和文件系统 使用正则表达式和 s ...

  3. 【超详总结/理解:正则表达式】特点/元字符/正则表达式中的标志位-flag/RegExp/重复操作与后向引用/匹配模式/表达邮箱/正则表达式对象的方法/利用正则表达式限制网页表单里的文本框输入内容

    文章目录 正则表达式: 正则表达式的用途 正则表达式的组成-元字符 正则表达式的特点 正则表达式中的标志位-flag JavaScript中的正则表达式解析 RegExp 定义 RegExp RegE ...

  4. Linux 正则表达式与元字符

    今天继续给大家介绍Linux基础知识,本文主要内容是Linux的正则表达式和元字符. 正则表达式是一种匹配字符串的表达方式,而元字符就是构成正则表达式的基本元素,在Linux中,我们需要经常使用正则表 ...

  5. 【前端32_高级】正则表达式:元字符、断言、匹配模式

    文章目录 正则 参考 入门:提取数字 详解 创建正则 跟正则相关的字符串方法 split replace match search 元字符 零宽断言 正向肯定断言 正向否定断言 负向肯定断言 负向否定 ...

  6. Linux正则表达式grep与egrep

    grep -io "http:/=[A-Z0-9]\{16\}" ./wsxf.txt >wsxf_urls.txt Linux正则表达式grep与egrep 正则表达式:它 ...

  7. linux文本处理工具之grep与正则表达式语法

    Grep 介绍 Linux 文本处理三剑客之一,文件过滤工具(另外两剑客为sed:文本编辑工具,awk:文本报告生成器) 拥有着,根据用户指定的"模式"对目标文本逐行进行匹配检查: ...

  8. Python正则表达式之元字符详解(1)

    文章目录 简介 注意: 字符匹配 元字符 [ ] 注意: 反斜杠\ . * + ? {} 简介 正则表达式(Regular expressions 也称为 REs,或 regexes 或 regex ...

  9. python正则表达式元字符用法_正则表达式-常用元字符的基本使用

    常用元字符有:[]  ^  $  \  *  +  ?  {} . python中使用正则表达式需要导入re模块 下面介绍用法 [] 指定一个字符集,[ABC]表示ABC的字符集,[^ABC] 取反, ...

最新文章

  1. 你可能没那么了解 JWT
  2. GridView强制换行与自动换行
  3. JAVA程序员面试32问(答案)
  4. AtCoder AGC009E Eternal Average (DP)
  5. 大小仅1MB,超轻量级通用人脸检测模型登上GitHub趋势榜
  6. 免费下载 | 超级APP背后的移动端技术大揭秘
  7. python爬取下拉列表数据_Python+selenium之获取文本值和下拉框选择数据
  8. 汇编语言(十五)之找出两个数组中的相同元素
  9. 【HTML/CSS】定位方式及区别
  10. mysql mariadb的VC客户端遇到的问题
  11. 科罗拉多大学 C#游戏编程课程总结
  12. 2021年SWPUACM暑假集训day3最小生成树算法
  13. Linux篇---Grep和正则匹配
  14. rgb sw 线主板接口在哪_旋转RGB制作指导
  15. linux中完全卸载oracle,Linux 完整卸载oracle和grid软件
  16. 重定向后路径上自动添加jsessionid=
  17. python实现端口扫描器_python 实现端口扫描工具
  18. 初学者最容易学的六种编程语言
  19. 筑巢引凤、珠联璧合、潜龙出海,蚂蚁金服开放平台如何将“开放”做好?
  20. java开发平时看什么东西

热门文章

  1. 千万不能让程序员给娃娃取名字
  2. 【大数据OLAP引擎】图文详解 Apache Doris 架构
  3. 王者客服信息服务器,王者荣耀客服反馈在哪 客服反馈入口位置介绍
  4. 如何在 Arch Linux 中安装 DNSCrypt 和 Unbound
  5. 三国志战略版:Daniel_蔡文姬_武锋阵_1.13日更新分析
  6. Gson 解析数组、集合
  7. 查询手机或邮箱注册过哪些网站
  8. C#FindWindowEx参数详解
  9. 2021性价比高的蓝牙耳机,五款高性价比蓝牙耳机
  10. 滴滴到底是怎么计费的?滴滴计价系统架构首次揭秘