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

前言

正则表达式是对字符串操作的一种逻辑公式,通常被用来检索、替换那些符合某个规则的文本,在我们的实际工作中尤为重要。

一、概述

  • 通常用于判断语句中,用来检查某一字符串是否满足某一格式
  • 正则表达式是由普通字符与元字符组成
  • 普通字符包括大小写字母、数字、标点符号及一些其他符号
  • 元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式

Linux 中常用的有两种正则表达式引擎

  • 基础正则表达式:BRE
  • 扩展正则表达式:ERE

二、基础正则表达式

常配合使用的工具:grep、sed、awk(Linux三剑客)

 三、扩展正则表达式

 

四、grep命令

格式:
grep 选项 文件
过滤文本中的字符串,
命令产生的字符
选项:
-color=auto 对匹配到的文本着色显示
-m # 匹配 # 次后停止
-v 显示不被 pattern 匹配到的行 , 即取反
-i 忽略字符大小写
-n 显示匹配的行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串
-q 静默模式,不输出任何信息
-A # after, 后 # 行
- B # before, 前 # 行
- C # context, 前后各 # 行
-e 实现多个选项间的逻辑 or 关系
-w 匹配整个单词
-E 使用 ERE ,相当于 egrep
-F 不支持正则表达式,相当于 fgrep
-f file 根据模式文件,处理两个文件相同内容 把第一个文件作为匹配条件
-r 递归目录,但是不处理软链接
-R 递归目录,处理软链接
 

  • 统计包含某个字符的文本行的行数

 

  • 不区分大小写查找指定字符所在行

 

  • 将非空行行写入到文件中

  • 过滤IP地址

 

五、元字符操作案例

(1)查找特定字符,显示行号

 

(2)查找特定集合字符

“[ ]”中无论有几个字符, 都仅代表一个字符,也就是说“[sh]”表示匹配“s”或者“h”其中任意一个字符。

 查找单个重复字符

 查找oo前不是r的字符串

 查找包含数字的行

(3)查找行首与行尾字符

  • 过滤出以root开头的行

 

  • “^”符号在元字符集合“[]”符号内外的作用是不一样的,在“[]”符号内表示反向选择,在“[]” 符号外则代表定位行首

 

  • 可以使用“$”定位符查找以某一特定字符结尾的行

  • 查询空白行    grep -n '^$' 

(4)查找任意字符与重复字符

  • 查找w开头d结尾的任意一个四位字符串  

grep w..d 文件名

  • 查找“w”开头“d”结尾,且包含0个以上“o”的字符串

grep wo*d

  • 查找“w”开头“g”结尾,包含任意字符的字符串

(5)查找连续字符范围

  • 查找带有固定个数以上的某字符的字符串

  • 查找带有范围数量某字符的字符串

四、cut、sort、uniq、tr

(1)cut列截取工具
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一
cut只擅长于处理单个字符为间隔的文本,-b只能分割字母,-c既可以分割字母也可以分割中文
 

 

 打印指定列

打印第一列

打印一到三列:  -f 1-3

打印一和三列:-f 1,3

(2)sort排序工具

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

格式:sort [选项] 参数

  • 按字母排序
    不加选项默认是字母排序,按a-z顺序排序

  • 按数字排序 -n

 

  • 反向排序 -r

不输出结果,输出到指定文件 -o

 

  • 去掉文件中重复的行

sort -u 文件名

(3)uniq去重工具

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

 

  • 统计连续的重复行的次数

  • 结合sort使用过滤出重复行

  • 过滤出不重复的行

 结合sort使用,去重(与sort -u相同)

(4)tr修改工具

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

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

 

  • 将所有小写改成大写

 

  • 一一替换出现的对应字母

 

  • 可以使用特殊字符替换,也可以替换多个

  • 当遇到单引号,使用双引号

  • 删除所有o  tr -d

  • 去重字符o,只保留一个   tr -s

 

  • 去除空行

 (5)常用的组和用法

  • 查看登录用户

  • 查看登陆过系统的用户

  • 查看登录ip和使用者个数

 

  • 查看客户端和监听服务个数

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值