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

目录

一、正则表达式概念

1.1 正则表达式的定义

1.1-1 正则表达式组成:

1.2 正则表达式的层次

1.2-1 基础正则表达式元字符

1.2-2 扩展正则表达式元字符

二、grep

2.1 grep的查找格式

2.2 grep的常用选项

三、cut

3.1 cut的常见参数

四、sort

4.1 sort常见的参数选项

 五、uniq

5.1 uniq常用的选项

六、tr

tr的常用选项


一、正则表达式概念

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

正则表达式不止一种,而且 LINUX 中不同的程序可能会使用不同的正则表达式,如工具:grep、sed、awk、egrep

1.1 正则表达式的定义

正则表达式,又称正规表达式、常规表达式

使用字符串来描述,匹配一系列符合某个规则的字符串

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

1.1-1 正则表达式组成:

普通字符:大小写字母、数字、标点符号及一些符号

元字符:在正则表达式中具有特殊意义的专用字符

元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定前导字符(就是位于元字符前面的字符)在目标对象中的出现模式

1.2 正则表达式的层次

1.2-1 基础正则表达式元字符

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

除了普通字符外,还有以下常见的元字符

  • \:转义字符,\!,\n等
  • ^:匹配字符串开始的位置,例如:^a、^the、^#
  • $:匹配字符串结束的位置,例如:word$
  • .:匹配除\n之外的任意字符,例如:go.d、g..d
常见的元字符(续)

*:匹配前面子表达式0次或者多次
例:goo*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,\}

1.2-2 扩展正则表达式元字符

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

扩展的元字符

+:匹配前面子表达式至少1次以上,例:go+d,将至少匹配1次o

?:匹配前面子表达式0次或者1次,例:go?d,将匹配gd或者god

():将括号中的字符串做为一个整体

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

|:以或的方式匹配字条串

例1:good|food,将匹配good或者food

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

二、grep

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

2.1 grep的查找格式

grep 【选项】查找条件 目标文件

2.2 grep的常用选项

例1:

例2:

例3:

例4:

例5:

例6:

例7:

三、cut

cut:列截取工具

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

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

3.1 cut的常见参数

例1:

例2:

例3:

四、sort

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

sort 【选项】参数

4.1 sort常见的参数选项

例1:

 例2:

例3:

例4:

 例5:

 五、uniq

主要是用于去除连续的行

注意:是连续的行,所以通常和sort结合使用先排序使之变成连续的行再去掉相同的行,否则不连续的话不能执行去除重复的行

uniq【选项】参数

5.1 uniq常用的选项

例1:

 

例2:

例3 :

例4:

例5:

 

六、tr

他可以用一个字符替换另一个字符。或者完全去除一些字符,也可以用它去除重复字符

tr【选项】SET1 [SET2]

tr的常用选项

-d:删除字符

-s:删除所有重复的字符,只保留一个

例1:

例2:

例3:

例4: 

例5:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值