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

本文深入探讨了Shell编程中的正则表达式基础和扩展,详细讲解了grep、sed、awk这网上三剑客的使用方法,以及cut、sort、uniq、tr四个文本处理工具的实例应用,帮助读者在实际工作中更高效地处理文本和数据。
摘要由CSDN通过智能技术生成

目录

一:正则表达式

1.1基础正则表达式

1.2扩展正则表达式

二:网上三剑客之——grep查找

​​2.1grep命令和正则表达式运用

三:文本小工具cut、sort、uniq、tr

3.1cut列截取工具 

3.2sort排序

3.3uniq去重 

3.4tr修改 

四:网上三剑客之——sed 工具

4.1sed命令格式

4.2用法示例行演示

4.2.1输出符合条件的文本(p表示正常输出)

4.2.2 删除符合条件的文本(d)

4.2.3替换符合条件的文本

4.2.4迁移符合条件的文本

五:网上三剑客之——awk打印

5.1awk概述

5.2awk工作原理

5.3awk命令格式和参数

5.3.1awk常用内置变量:$1、$2、NF、NR、$0

5.3.2BEGIN和END的用法与区别

5.3.3模糊匹配,用~表示包含;!~表示不包含

5.3.4关于数值与字符串的比较

5.3.5awk高级用法

六:总结


引言:在生产环境中我们必不可少的使用网上三剑客:grep、sed、awk,我们需要了解其功能以及结合正则表达式和四种小工具cut、sort、uniq、tr来满足我们在工作时的各种需要。

一:正则表达式

正则表达式定义:

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

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

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

正则表达式组成

普通字符:大小写字母,数字,标点符号及一些其他符号 普通字符需要转义符

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

网上三剑客:grep(查找);set(修改);awk(打印)

1.1基础正则表达式

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

除了普通字符外,常见到以下元字符

\:转义字符,\!、\n等

^:匹配字符串开始的位置
例:^a、^the、^#

$:匹配字符串结束的位置
例:word$

.:匹配除\n之外的任意的一个字符
例:go.d、g..d

*:匹配前面子表达式0次或者多次
例:goo*d、go.*d

[list]:匹配list列表中的一个字符
例:go[old]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

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

二:网上三剑客之——grep查找

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

-E 开启扩展(Extend)的正则表达式
-c 计算找到 ‘搜寻字符串’ 的次数
-i 忽略大小写的不同,所以大小写视为相同
-o 只显示被模式匹配到的字符串
-v 反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行!(反向查找,输出与条件不相符的行)

--color=auto

可以将找到的关键词部分加上颜色的显示
-n 输出行号

egrep是grep的升级版

案例:

统计root字符行总行数 

案例: 

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

案例:

将/etc/passwd下查找不显示root的行

案例:

将非空行写入到test.txt文件

案例:

过滤出ip

2.1grep命令和正则表达式运用

案例:查找特定字符

案例:利用中括号查找特定字符集

案例:查找含有oo的字符集

案例:[^]在正则表达式中是取反的意思

案例:查找行首和行尾

案例:以数字和字符开头

案例:查找以.号结尾的行

案例:查找空行

案例:

案例:

案例:

案例:

案例:只显示俩个o及以上的字符

案例:只显示2到5个o以w开头d结尾的字符

三:文本小工具cut、sort、uniq、tr

3.1cut列截取工具 

cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。如果不指定file参数,cut命令将读取标准输入。必须指定 -b、-c或-f标志之一

-b 按字节截取
-c 按字节截取,常用于中文
-d

指定以什么为分隔符截取,默认为制表符

-f 通常和-d一起

 案例:

同时打印俩列

案例:按字节截取

编辑一个文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值