正则表达式grep、egrep、sed和awk用法

本文详细介绍了正则表达式的基础概念,以及grep、egrep、sed和awk这四个强大的文本处理工具的使用方法。从基本的过滤行、替换字符到复杂的条件操作和数学运算,通过实例演示了它们在处理文本数据时的强大功能。适合初学者学习和进阶者参考。
摘要由CSDN通过智能技术生成

1.1正则表达式

计算机科学中,对“正则表达式”的定义是 :它使用单个字符串来描述或匹配一系列符合某个句子规则的字符串。

1.1.1grep/egrep的 用法

grep的格式:grep [-cinvABC] ‘word’ filename

-c:表示打印符合要求的行号数
-i:表示忽略大小
-n:表示输出符合要求的行及行号
-v:表示打印不符号要求的行
-A:后面跟一个数字(有无空格都可以),例如-A1打印符合要求的行和下面一行
-B:后面跟一个数字(有无空格都可以),例如-B1打印符合要求的行和上面一行
-C:后面跟一个数字(有无空格都可以),例如-C1打印符合要求的行和上下各一行

-A2把包含halt那行以及下面两行打印出来
在这里插入图片描述
-B2把包含halt那行以及上面两行打印出来
在这里插入图片描述
-C2把包含halt那行以及上下两行打印出来
在这里插入图片描述

1.1.2 过滤出带某个关键字的行,并输出行列

#grep ‘bin’ /etc/passwd
在这里插入图片描述

1.1.3过滤出带某个关键字的行,并输出行列

grep -nv ‘nologin’ /etc/passwd
在这里插入图片描述

1.1.4过滤出所有包含数字的行

grep ‘[0-9]’ /etc/passwd
在这里插入图片描述

1.1.5过滤掉所有包含数字的行

在这里插入图片描述
在正则表达式中,可以用’^'表示开始,用$表示结尾,那么空行则可以用[ ^ $]来表示

前面也提到了[ ]的用法,想要过滤掉数或者寻找关键数字,可以用[0-9]这样的形式(如果是[15]这样的形式,则表示只含有数字1和数字5)。如果想要过滤掉数字和大小写字母,则可以使用[a0-0a-zA-Z]这样的形势。另外,[ ^ 字符 ] 表示除[ ]内字符之外的字符,^放在[]外面的则表示以什么什么开头。看以下示例:
在这里插入图片描述
在这里插入图片描述
这是^的各种用法
在这里插入图片描述

1.1.6过滤掉任意一个字符和重复字符

grep ‘r.o’ /etcpasswd
在这里插入图片描述
.表示任意字符。上例中r.o表示把r与o之间有一个任意字符的行过滤出来。

在这里插入图片描述
*表示零个或多个它前面的字符。上例中,*表示oo、ooo、oooo…。

在这里插入图片描述
.*则表示零个或多个任意字符,空行也包括在内。

1.1.7指定要过滤的字符出现次数

在这里插入图片描述
{}内部的数字表示重复出现的次数。**{}两边都要加上转义字符**(这里是我的问题,不应该是{}|这样吗?)。使用{}也可以是一个范围,如{n1,n2},如果其中你n1<n2,则表示重复n1到n2次前面的字符,n2还可以为空,这时表示大于等于n1次。

1.1.8过滤出一个或多个指定字符

egrep ‘o+’ test.1
在这里插入图片描述

egrep ‘oo+’ test.1
在这里插入图片描述

egrep ‘ooo+’ test.1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值