Linux三剑客-sed、awk、egrep(上)

一、知识梗概

二、正则表达式

定义:正则表达式是一种强大的文本处理工具,用于在文本中搜索符合特定模式的字符串。它由一系列特殊字符和普通字符组成,可以定义复杂的搜索模式。正则表达式被广泛应用于各种编程语言和文本处理工具中。

简单来说就是文本匹配:可以根据你定义的表达式抓取到你想要的东西,实现文本匹配、文本查找以及文本替换等功能的一种工具。

1、通配符

*    匹配0个或者多个字符

?    匹配一个字符
[...]    匹配范围内的任意一个字符  
    --> [0-9] 0到9任意一个字符
    --> [^0-9] 不属于0-9的任意字符
    --> [abc] 取a或者b或者c
    --> [a-z]取字母a-z之间的字符
{}    组合匹配

举例使用:

#使用{}组合匹配符,中间用逗号隔开,匹配相应数字
[root@localhost 10-17]# mkdir yuhengxing{1,6,99}
[root@localhost 10-17]# ls
yuhengxing1  yuhengxing6  yuhengxing99
#使用{11..15}表示匹配11-15的所有数字
[root@localhost 10-17]# mkdir yuhengxing{11..15}
[root@localhost 10-17]# ls
yuhengxing1   yuhengxing12  yuhengxing14  yuhengxing6
yuhengxing11  yuhengxing13  yuhengxing15  yuhengxing99

2、元字符

有特殊含义的字符,可以表示其他含义如:!  $  ^等

后面会举例子用到,和egrep一起使用。

三、egrep

1、grep和egrep的区别

egrep比grep更好用,grep支持基本正则,egrep还支持扩展正则(有:|  {}  )

比如,egrep可以解析管道符号:
egrep会将“|”理解为“或者”,查找xiaomi或者huawei的文本:

#这里的 “-i”选项表示忽略大小写
#egrep就能理解管道符号,解析为“或者”
[root@localhost 10-17]# egrep -i "xiaomi|huawei" mobile_phone.txt 
xiaomi	HUAWEI
VIVO	huawei

grep就不能理解“|”,而是忽略大小写,查找xiaomi|huawei整体,所以没有找到任何东西:

[root@localhost 10-17]# grep -i "xiaomi|huawei" mobile_phone.txt 
[root@localhost 10-17]# 

要想使得grep与egrep效果相同,则:

grep -E = egrep

2、egrep的选项

-i         忽略大小写

-o        仅仅展示要查找的内容

-n        显示行号

-v        取反,对整行取反匹配

-i在上面使用过,所以这里举例说明下面三个怎么使用:

#这里的 mobile_phone.txt 文本中,VIVO huawei这个是同一行的内容,所以都显示出来了
[root@localhost 10-17]# egrep -i "xiaomi|huawei" mobile_phone.txt 
xiaomi	HUAWEI
VIVO    huawei
#加上-o选项之后,同一行的VIVO就不在展示出来
[root@localhost 10-17]# egrep -o -i "xiaomi|huawei" mobile_phone.txt 
xiaomi
HUAWEI
huawei

#获取passwd中含有“root”的内容,-n就显示在哪一行
[root@localhost 10-17]# cat /etc/passwd |egrep "root" -n
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
#第一行和第十行有root

#所有没有root的行都会被输出:
[root@localhost 10-17]# cat /etc/passwd |egrep "root" -v

3、正则表达式和egrep的使用

正则的分类:

基本正则:^    $    .    *
扩展正则:|    +    ?    {}

感受一下正则与egrep的使用:

#查找网址正则:
[root@localhost 10-17]# cat web.txt |egrep "[a-Z]+://[0-z]+\.[0-Z]+\.[0-Z]+"
#查找邮箱正则:
[root@localhost 10-17]# cat mail.txt |egrep "[0-Z_]+@[0-Z]+\.[a-Z]+"
#查找ip的正则:
[root@localhost 10-17]# cat /var/log/secure |egrep "(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9])"

扩展正则:
?    0个或者1个前面的字符:
*    0个或者多个前面的字符:
+    至少一个前面的字符
{n}    至少出现n次前面的字符
{n1,n2}    至少出现n1到n2次前面的字符

^$    代表空行
.    代表任意单个字符
.*    代表所有字符
*    代表前面的字符出现0个或多个

[root@localhost 10-17]# echo "aaaaabbbbbbccc"|egrep "b*"
aaaaabbbbbbccc
[root@localhost 10-17]# echo "aaaaabbbbbbccc"|egrep ".*"
aaaaabbbbbbccc

如有问题欢迎评论区或后台留言

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux三剑客指的是 awksedgrepawk 是一种用来处理文本文件的工具,它可以根据指定的模式进行自动分割并进行数据处理。 sed 是一种流编辑器,它可以对文本文件进行替换、删除和插入操作。 grep 是一种文本搜索工具,它可以在文本文件中搜索指定的字符串。 ### 回答2: Linux三剑客,分别是awksedgrep,它们是Linux系统中非常重要的命令行工具,它们通常被称为文本处理工具。这些工具通常被用于筛选、搜索和处理文本文件。 grep是一种常见的文本搜索工具,可以在文件和文件夹中搜索指定的字符串或正则表达式。grep可以搜索多个文件并返回匹配行的输出。它是处理日志文件或查找匹配模式的最佳工具之一。 sed是一种流编辑器,可以按照行处理文本文件。它可以通过替换、删除和插入操作来修改文件内容。在大型文件中查找并替换模式是sed的主要作用。该工具通常在文本文件中提取有用信息是常用。 awk是一种强大的文本操作工具,可以分析大型文本文件并对其进行处理。该工具可以遍历行和列,并提供强大的文本处理工具,如计算、过滤和转换数据。awk的处理速度非常快,适用于处理大型数据文件。 Linux三剑客awk是最强大的工具,它可以执行复杂的文本数据操作和转换,可大大简化开发和管理过程。sed主要用于简单的文本数据过滤和替换,而grep主要用于搜索文件和定位特定行。 总之,Linux三剑客在文本数据处理方面具有不可替代的重要作用。对于Linux操作系统的开发人员和管理员来说,熟练使用这些工具可以提高他们的工作效率,使他们更容易管理和操作文本文件。 ### 回答3: Linux三剑客awk sed grep是我们在日常工作中经常使用的三个命令。它们都属于文本处理工具,可以用于查找、处理、分析文本文件等。 首先,grep是最常用的文本搜索工具。grep可以用来快速查找文件中指定的字符串或正则表达式,并将包含该字符串或正则表达式的行打印出来。常用的命令有grep、egrep和fgrep。比如,我们可以使用grep命令来查找一个文件中包含指定关键字的行,可以使用egrep来支持正则表达式搜索,使用fgrep来进行快速搜索,不支持正则表达式。 其次,sed是一种流编辑器,主要用于对文本文件进行替换、删除、添加、插入等操作。sed命令可以通过管道(|)将多个命令组合起来,从而进行复杂的文本操作。sed可以快速完成对文本文件的修改操作,比如替换文件中的某些内容、删除特定的行、在文件中插入新的文本等。sed的命令形式是“command", 比如"s/old/new/g",表示将old替换成new。 最后,awk是一种强大的文本处理工具,主要用于在文本文件中查找、处理以及格式化特定的字段。和grepsed不同的是,awk更加灵活,可以在处理过程中做到数据过滤和加工,对于大数据的处理特别有用。awk命令的常用语法是"pattern {action}"。其中,pattern代表要匹配的模式,而action代表模式匹配时需要执行的动作,我们可以在其中添加处理语句来对文件进行各种处理操作,比如计算、统计、格式化等。 综上所述,Linux三剑客awk sed grep是我们在文本处理工作中不可或缺的三个工具,不同的工具可以用于处理不同的文本操作,也可以用于搭配使用,以完成更加复杂的文本处理工作。对于需要经常处理文本的人员来说,掌握这些工具是非常必要的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值