Shell编程之正则表达式(Shell脚本文本三剑客之grep)

目录

1 正则表达式概述

1.1 正则表达式定义

1.1.1 正则表达式组成

2 基础正则表达式元字符 

3 常见管道命令

3.1 grep

3.2 cut(列截取工具)

3.3 sort

3.4 uniq

3.5 tr


1 正则表达式概述

正则表达式,又称规则表达式。(Regular Expression),在代码中常简写为regex、regexp或RE。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

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

1.1 正则表达式定义

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

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

1.1.1 正则表达式组成

  • 普通字符:大小写字母、数字、标点符号及一些其他符号
  • 元字符:在正则表达式中具有特殊意义的专用字符

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

2 基础正则表达式元字符 

常见的元字符
\转义字符,\!、\n等
^匹配字符串开始的位置
$匹配字符串结束的位置

.

匹配除\n之外的任意的一个字符
*

匹配前面子表达式0次或多次

[ ]匹配列表中的一个字符
[^ ]匹配任意不在列表中的一个字符(取反)
\{n,m\}匹配前面的子表达式n到m次,有\{\n}、\{n,\}、\{n,m\}三种格式
+匹配前面子表达式1次以上

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

()将括号中的字符串作为一个整体
|以或的方式匹配字条串

3 常见管道命令

3.1 grep

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

常用选项
-E开启扩展(Extend)的正则表达式
-c计算找到 “搜寻字符串” 的次数
-i忽略大小写的不同,所有大小写视为相同
-o只显示被模式匹配到的字符串
-v反向选择(反向查找,输出与查找条件不相符的行)
-n顺序输出行号

例1

方法一

方法二

例2 

例3

 例4

 

例5

例6

例7

 

3.2 cut(列截取工具)

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

格式:cut [选项] 参数

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

例1

方法一

方法二

 例2

 例3

3.3 sort

sort是一个以行为单位对文件内容进行排序的工具

格式:sort [选项] 参数

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

例1

 例2

 例3 

3.4 uniq

uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用

格式:uniq [选项] 参数

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

例1

 例2

3.5 tr

常用来对来自标准输入的字符进行替换、压缩和删除。

格式: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、付费专栏及课程。

余额充值