Shell———三大巨头(grep,sed,awk)命令详解

本文详细介绍了Shell中用于文本过滤和处理的三大命令:grep、sed和awk。grep用于文本过滤,支持基本和扩展正则表达式,提供了-v、-c、-q等选项。sed是一个行编辑器,可以执行删除、添加、替换等操作,不直接改变原文件,但使用-i参数可以。awk则是一个强大的文本分析工具,支持在处理文本前后的初始化和总结操作,以及复杂的模式匹配和处理指令。
摘要由CSDN通过智能技术生成

1.基本元字符

正则表达式    描述    示例
^     
  

    
     
     
 行起始标志  ^tux 匹配以tux起始的行
$    行尾标志  tux$ 匹配以tux结尾的行
.    匹配任意字符    hack. 匹hackl和hacki,但是不能匹配hackl2和hackil,它只能匹配单个字符
[]  匹配包含[字符]之中的任意一个字符   coo[k1]匹配 cook和 cool
[^] 匹配除[^字符]之外的任意一个字符   9[^01]匹配92,93,但是不匹配91或90
[-]   匹配[]中指定范围内的任意一个字符  [1-5]匹配从1~5的任意一个数字
?       
   
  
  
     
 匹配之前的项 0次或者 1次 Colou?r 匹配color 或者colour,但是不能匹配colouur
 
+      匹配之前的项1次或多次   Rollno-9+ 匹配rollno-99,rollno-9,但是不能匹配rollno-
  
*    匹配之前的项0次或多次  Co*l 匹配cl,col.coool等
()  创建一个用于匹配的子串   ma(tri)? 匹配max或maxtrix
{n}    匹配之前的项n次  [0-9]{3}匹配任意一个三位数,[0-9]{3}可以扩展为[0-9][0-9][0-9]
{n,}  之前的项至少需要匹配n次     [0-9]{2,}匹配任意一个两位和更多位的数字
{n,m}  指定之前的项所必须匹配的最小次数和最大次数  [0-9]{2,5}匹配从两位数到五位数之间的任意一个数字
 
|      
  
交替–匹配两边的任意一项  Oct (1st | 2nd ) 匹配 oct 1st 和 2nd
\   转义符可以将上面介绍的特殊字符进行转义   a.b 匹配a.b,.通过在.之间加上前缀,从而忽略了.的特殊意义
 
^$     以空开头,以空结尾     过滤空行

grep文本过滤命令

  • grep 和egrep 的区别:
    egrep除了可以使用基本的正则表达外, 还可以用扩展表达式
  • 扩展表达式:
    + 匹配一个或者多个先前的字符, 至少一个先前字符.
    ? 匹配0个或者多个先前字符.
     

格式:grep [-参数 [搜索内容]]|[[参数]搜索内容] 文件

grep -E = egrep
grep       -v       # -v 表示反向过滤
grep       -c        # 统计匹配行数
grep        -q       # 静默,无任何输出
grep       -n        # 显示匹配结果所在的行号
 

-i忽略大小写
^:以搜索内容开头
$:以搜索内容结尾
-v:除了搜索内容
-n :行号
-n2:搜索内容上小两行
-E:相当于egrep,搜索模式扩展成正则表达式,只要搜索的内容有正则表达式就需要加-E;
-A?:后?行
-B?:前?行
.:代表一个字符
*:0到任意次,字符跟在谁后面,谁就是0到任意次
,?:
\?:字符出现[0-1次],表示字符跟在谁后面,谁就是0到1次
-n:显示只处理的行号;
np:显示第n行;
d:删除
a:下一行添加
添加多行\n
i:上一行添加
-n:只显示搜索内容;
/p:对搜索的内容,会全部显示原文件内容和搜索文件内容,所以会出现重复内容;
/^UUID/!d:显示删除的这一行
两行需要添加引号

[root@base1 mnt]# grep '172.25.254.178' /etc/hosts && echo 'YES' || echo 'NO'
172.25.254.178 www.westos.com news.westos.com music.westos.com
YES
[root@base1 mnt]# grep -q '172.25.254.178' /etc/hosts && echo 'YES' || echo 'NO' 
YES

[root@base1 mnt]# cp /etc/passwd /mnt
[root@base1 mnt]# egrep -c '/sbin/nologin' passwd  # 统计匹配的行数
42
[root@base1 mnt]# grep ^root passwd    #

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值