栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

shell编程之正则表达式与文本处理器

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

shell编程之正则表达式与文本处理器

目录

一、正则表达式

1.含义

2.定义

3.作用

4.grep

案例

二、基础正则表达式(BRE)

1.定义

2.常见元字符

三、扩展正则表达式(ERE)

1.定义

2.扩展元字符

四、文件处理器

1.cut(列截取工具)

使用说明

选项及其功能

案例

2.sort 

语法

案例

3.uniq

4.tr

常用选项

案例


一、正则表达式

1.含义

正则表达式,又称为规则表达式。在代码中常简写为redex、regexp或RE,计算机科学的一个概念。正则表达式通常用来检索、替换那些符合某个模式(规则)的文本。

正则表达式不只有一种,而且Linux中不同的程序可能会使用不同的正则表达式,如:

工具:grep  sed  awk egrep 

2.定义
  • 正则表达式,又称正规表达式、常规表达式
  • 使用字符串来描述、匹配一系列符合某个规则的字符串
  • 正则表达式组成:普通字符(大小写字母、数字、标点符号及一些其他符号);                    元字符(在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。)

3.作用

正则表达式---通常用于判断语句中,用来检查某一字符串是否满足某一格式

4.grep

grep [选项] 查找条件 目标文件

选项功能
-E

开启拓展的正则表达式

-c计算找到 '搜寻字符串' 的次数
-i忽略大小写的不同,所以大小写视为相同
-o只显示被模式匹配到的字符串
-v

反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!

(反向查找,输出与查找条件不相符的行)

--color=auto:可以将找到的关键词部分加上颜色的显示

-n输出行号

案例

[root@localhost ~]# grep -c root /etc/passwd     

//统计root字符总行数;或cat /etc/passwd | grep root

 [root@localhost ~]# grep -i "the" ceshi.txt

//不区分大小写查找the所有的行

 [root@localhost ~]# grep -v root /etc/passwd

//将/etc/passwd中没有出现root的行显示出来

[root@localhost ~]# cat ceshi.txt | grep -v '^$' > new.txt
//将非空行写入到new.txt文件中

 [root@localhost ~]# ifconfig ens33 | grep -o "[0-9]+.[0-9]+.[0-9]+.[0-9]+" | head -1

//过滤出IP

二、基础正则表达式(BRE)

1.定义

基础正则表达式是常用的正则表达式部分。

2.常见元字符
  • :转义字符,!、n等
  • ^:匹配字符串开始的位置(^a、^the、^#)
  • $:匹配字符串结束的位置(word$)
  • .:匹配除n之外的任意的一个字符(go.d、g..d)
  • *:匹配前面子表达式0次或者多次(doo*d、go.*d)
  • [list]:匹配list列表中的一个字符(go[ola]d、[abc]、[a-z]、[a-z0-9])
  • [^list]:匹配任意不在list列表中的一个字符([^a-z]、[^0-9]、[^A-Z0-9])
  • {n,m}:匹配前面的子表达式n到m次,有{n}、{n,}、{n,m}三种格式(go{2}d、go{2,3}d、go{2,}d)

注意 egrep, awk使用{n}、{n,}、{n,m}匹配时“{}"前不用加“”

   egrep -E -n 'wo{2}d' test.txt   -E用于显示文件中符合条件的字符
   egrep -E -n 'wo{2,3}d' test.txt

三、扩展正则表达式(ERE) 1.定义

扩展正则表达式是对基础正则表达式的扩充深化。

2.扩展元字符
选项功能
+

匹配前面子表达式1次以上

例:go+d,将匹配至少一个o

匹配前面子表达式0次或者1次

例:go?d,将匹配gd或god

()

将括号中的字符串作为一个整体

例:(xyz)+,将匹配xyz整体1次以上,如xyzxyz

|

以或的方式匹配字条穿

例:good|food,将匹配good或者food;g(oo|la)d,将匹配good或者glad

四、文件处理器

1.cut(列截取工具)

使用说明

cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

如果不能指定File参数,cut命令将读取标准输入。必须指定-b、-c、或 -f标志之一。

选项及其功能
选项功能
-b按字节截取
-c按字符截取,常用于中文
-d指定以什么为分隔符截取,默认为制表符
-f通常和-d一起
案例

[root@localhost ~]# cat /etc/passwd | cut -d ':' -f 1

 [root@localhost ~]# cat /etc/passwd | cut -d ':' -f 3

 

 [root@localhost ~]# cat /etc/passwd | cut -d ':' -f1,3

 

 [root@localhost ~]# who | cut -b 4

[root@localhost ~]# who | cut -b 1

2.sort 

是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序。例如数据和字符。

语法

 sort [选项] 参数

选项功能
-t指定分隔符,默认使用[Tab]键或空格分隔
-k指定排序区域,哪个区间排序
-n按照数字进行排序,默认是以文字形式排序
-u等同于uniq,表示相同的数据仅显示一行,注意:如果行尾有空格去重就不成功
-r反向排序,默认是升序,-r就是降序
-o将排序后的结果转存至指定文件
案例

 [root@localhost ~]# sort ceshi.txt

不加任何选项默认按第一列升序,字母的话就是从a到z依次排列。

[root@localhost opt]# sort -n -t: -k3 /etc/passwd

以冒号为分隔符,以数字大小对第三列对第三列排序(升序)

[root@localhost opt]# sort -nr -t: -k3 /etc/passwd 

以冒号为分隔符,以数字大小对第三列对第三列排序(降序)

3.uniq

主要用于去除连续的重复行。

注意:是连续的行,所以通常和sort结合使用先排序使之变成连续的行再执行去重操作,否则不连续的重复行他不能去重。

选项功能
-c对重复的行进行计数
-d仅显示重复行
-u仅显示出现一次的行

[root@localhost ~]# cat 4.txt | sort | uniq -c
先排序,再对重复行进行排序

[root@localhost ~]# cat 4.txt | sort | uniq -d

仅显示重复的行

[root@localhost ~]# cat 4.txt | sort | uniq -u

仅显示不重复的行

[root@localhost ~]# cat 4.txt | sort | uniq

去掉重复的部分

4.tr
  • 它可以用一个字符来替换另一个字符,或者可以完全除去一些字符,也可以用它来除去重复字符
  • 从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。

格式:tr [选项]… SET1 [SET2]

常用选项
选项功能
-d删除字符
-s删除所有重复出现的字符,只保留第一个
案例

[root@localhost ~]# cat 4.txt | tr 'a-z' 'A-Z'
将文本内容中所有小写字母改为大写

 

 [root@localhost ~]# cat 4.txt | tr 'cat' 'CAT'

一一替换        c对应C         a对应A      t对应T

 

[root@localhost ~]# cat 4.txt | tr -d 'd' 

删除所有d

[root@localhost ~]# cat 4.txt | tr -d 'dog' 

删除所有d,o,g这三个字母

[root@localhost ~]# cat 4.txt | tr -d 'n'

删除换行

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/880451.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号