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

Shell脚本之正则表达式与文本处理工具详解

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

Shell脚本之正则表达式与文本处理工具详解

文章目录
  • 一.正则表达式定义
  • 二.正则表达式元字符
    • 2.1基础正则表达式元字符
    • 2.2扩展正则表达式元字符
  • 三.文本处理工具
    • 3.1列截取工具--cut
    • 3.2排序工具--sort
    • 3.3去重工具--uniq
    • 3.4修改工具--tr
    • 3.5文本工具组合
  • 四.总结

引言:
正则表达式,又称规则表达式。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本,正则表达式不只有一种,而且 Linux 中不同的程序可能会使用不同的正则表达式。

一.正则表达式定义

正则表达式,又称正规表达式、常规表达式,使用字符串来描述、匹配一些列符合某个规则的字符串
正则表达式是由普通字符元字符组成
普通字符包括大小写字母、数字、标点符号及一些其他符号
元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式
Linux 中常用的有两种正则表达式引擎
基础正则表达式:BRE
扩展正则表达式: ERE

二.正则表达式元字符 2.1基础正则表达式元字符

基础正则表达式常见元字符如下:

元字符作用
转义字符,用于取消特殊符号的含义
^匹配字符串开始的位置
$匹配字符串结束的位置
^$匹配空行
.匹配除n之外的任何一个字符
*匹配前面子表达式0次或多次
[list]匹配list列表中的一个字符
[^list]匹配任意非列表中的一个字符
{n}匹配前面子表达式不少于n次
{n,m}匹配前面子表达式n到m次
注:egrep、awk使用{}匹配时不用加转义
1.!,n,$等
2.^a以a开头; ^#以#开头 ;^[a-z]以字母a-z开头
3.word$ 以word结尾

4.go.d 匹配一个字符,good,goad,gozd ; go…d ;匹配两个字符,goabd,goefd

5.go*d 匹配0个o或者多个,比如:gd、god、good、goood

6.go.*d 匹配go+多个任意字符+d

7.go{2,4}匹配gd中间有2-4个o,grep使用{}要用转义符

2.2扩展正则表达式元字符

扩展正则表达式元子符如下:

元字符作用
+匹配前面子表达式一次以上
匹配前面子表达式0次或一次
()将括号内的字符作为一个整体
以或的方式怕匹配字符条串

1.go+d 匹配至少一个o,比如god、good、gooood等

2.go?d, 匹配0次或1次o,比如:gd 或god

3.g(oo)+d, 将括号内的看做一个整体,比如:good、goood、gooooood

4.g(00|gg)d,匹配good或者gggd

grep使用扩展正则表达式元字符时必须加转义符""
egrep使用扩展正则表达式元字符时则不用加转义符

三.文本处理工具 3.1列截取工具–cut

显示行中的指定部分,删除文件中指定字段
格式:cut 选项 参数
常用选项:

选项说明
-b按字节截取
-c按字符截取
-d指定以什么分割符截取,默认为制表符
-f通常和-d一起使用

cut只擅长于处理单个字符为间隔的文本,-b只能分割字母,-c既可以分割字母也可以分割中文

3.2排序工具–sort

sort 是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序。
命令格式:sort [选项] 参数
常用选项:

选项说明
-t指定分隔符,默认使用Tab或空格分割
-k指定排序区域
-n按照数字进行排序,默认以文字排序
-u等同于uniq,相同数据仅显示一行 ,若行尾有空格则不成功
-r反向排序,默认是升序,-r反序
-o将排序后的结果转存至指定文件

1.不加任何参数,默认以第一列的字符升序

2.按数字升序排序

3.反向排序,并显示前10行

3.3去重工具–uniq

uniq 命令用于检查及删除文本文件中连续重复出现的行列
命令格式:uniq [选项] 参数

选项说明
-c对重复的行进行统计
-d仅显示重复行
-u仅显示出现一次的行

1.uniq -c 只统计连续重复的行

2.uniq -d 与uniq -u

3.uniq一般与sort命令一起使用

3.4修改工具–tr

tr可以用一个字符来替换另一个字符,或者可以完全除去一些字符,也可以用它来除去重复字符
命令格式: tr [选项] 字符集1 字符集2
常用选项:

选项说明
-d删除字符
-s删除所有重复出现的字符,只保留第一个

1.替换,当字符集1 与字符集2一一对应时

2.当字符集1 与字符集2不对应时

当字符没有一一对应时,字符集1剩余的字符,对应字符集2最后的一个字符
当字符集1中出现重复字符时,默认匹配后一个字符所对应的字符集2的字符

3.删除 -d

4.去重-s,只有连续出现的才去重

3.5文本工具组合

在实际使用中,我们经常将多个文本工具,组合使用达到我们的目的
1.查看登录用户和ip

2.查看登录过系统的用户

last 查看登录历史记录
cut -d " " -f1 以空格为分隔符截取第一列
sort -u     排序并过滤重复的
grep -v "^$|wtmp" 过滤空行和wtmp
wtmp 位于/var/log/wtmp  用于存放登录历史记录的文件

3.查看登录ip和使用者个数

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

四.总结

1.用grep使用扩展正则表达式元字符的时候,必须加转义符“”
2.用egrep使用正则表达式元字符时,不需要加转义符“、”
3.tr命令:当字符没有一一对应时,字符集1剩余的字符,对应字符集2最后的一个字符
当字符集1中出现重复字符时,默认匹配后一个字符所对应的字符集2的字符

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

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

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