Shell文本处理工具(grep、sed、awk )

1、grep

grep (global search regular expression_r(RE) and print out the line,全面搜索正则表达式并把行打印出来),用于查找文件里符合条件的字符串,支持基本正则表达式。

grep不支持拓展正则表达式,若使用正则表达式,则使用egrep,在使用上egrep=grep -E

实验素材:
在这里插入图片描述
使用方法:
grep 参数 过滤条件 文件


过滤包含有root的行:

grep root passwd

在这里插入图片描述


忽略大小写过滤包含root的行:

grep -i root passwd

在这里插入图片描述


过滤以root开头的行:

grep ^root passwd

在这里插入图片描述


过滤以root结尾的行:

grep root$ passwd

在这里插入图片描述


过滤空行

grep ^$ passwd

在这里插入图片描述


反向过滤:将所选条件以外的内容输出
输出除空行以外的内容:

grep -v ^$ passwd

在这里插入图片描述


过滤root且root前无字符的行

grep "\<root" passwd 

过滤root且root后无字符的行

 grep "root\>" passwd 

过滤root且root前后无字符的行

grep "\<root\>" passwd 

在这里插入图片描述


过滤root且root前后无字符的行且输出行号:

grep -n "\<root\>" passwd 

在这里插入图片描述


只显示匹配行的行数:

grep -c "\<root\>" passwd 

在这里插入图片描述


显示过滤行及上下n行:grep -n passwd
过滤adm并显示上下两行:

grep -2 adm passwd 

在这里插入图片描述


显示过滤行及上面的两行:

grep -B2 adm passwd 

显示过滤行及下面的两行:

grep -A2 adm passwd 

在这里插入图片描述


字符匹配

.代表任意字符,一个.代表一个字符
查找文档中开头是r,结尾是t,中间有5个任意字符的匹配行:
在这里插入图片描述

…t匹配t前两个任意字符的行:
在这里插入图片描述
匹配以r开头,中间e的个数0到任意个,以d结尾的字符的行:
在这里插入图片描述

匹配以r开头,中间e的个数1到任意个,以d结尾的字符的行:
在这里插入图片描述
匹配以r开头,中间e的个数0到1个,以d结尾的字符的行:
在这里插入图片描述

{n},显示以r开头,e出现n次,以d结尾的字符的行:
在这里插入图片描述
{,n}匹配以r开头,中间e的个数最少多个,以d结尾的字符的行:
在这里插入图片描述
{n,}匹配以r开头,中间e的个数最少n个,以d结尾的字符的行:
在这里插入图片描述

{m,n}匹配以r开头,中间e的个数在m-n区间个,以d结尾的字符的行:
在这里插入图片描述
(字符){次数}指定字符出现的次数:
匹配haha出现5次的行:
在这里插入图片描述
脚本练习:
写一个脚本,脚本可以显示能够被su命令切换的用户
在这里插入图片描述

2、sed

sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。

使用方法:

sed 参数 命令 处理对象
sed 参数 处理对象 -f 处理规则文件

常用参数:

参数作用
-n不显示模式空间内容
-e可以在命令行执行多条内容
-f指定处理文件
-i直接修改原文件

动作:

p列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
d删除
a添加(当前行的下一行)
c替换

i|插入(当前行的上一行)

p:打印:
打印passwd文件第5行,使用-n参数不显示模式空间内容:

sed -n 5p passwd 

在这里插入图片描述
打印passwd文件第五行,显示模式空间内容

sed  5p passwd 

在这里插入图片描述
打印passwd文件的3到5行,不显示模式空间内容:

sed -n  3,5p passwd 

在这里插入图片描述

打印passwd文件的第3行和第5行:

sed -ne "3p;5p" passwd 

在这里插入图片描述
显示3行以后的行:

sed -ne '3,$p' passwd

在这里插入图片描述
显示以#开头的行:

sed -n '/^#/p' httpd.conf 

在这里插入图片描述
删除第3行:

sed  2d passwd 

在这里插入图片描述
删除以#开头的行:

sed '/^#/d' httpd.conf 

在这里插入图片描述
删除以#开头以外的行:

sed '/^#/!d' httpd.conf 

在这里插入图片描述
删除第3行到最后一行:

sed -e '3,$d' passwd 

在这里插入图片描述

在第2行后添加hello:

sed -e '2a hello' passwd 

在这里插入图片描述
在第2行后换行添加hello world:

sed -e '2a hello\nworld' passwd 

在这里插入图片描述
在以#开头的行后添加hello:

 sed -e '/^#/a hello' httpd.conf 

在这里插入图片描述
将第3行换为hello:

sed 3chello passwd 

在这里插入图片描述
将以#开头的行都换为@:

 sed -e '/^#/c@' httpd.conf 

在这里插入图片描述
在第二行插入hello:

sed 2ihello passwd 

在这里插入图片描述
将以#开头的行写入file文件中:

 sed '/^#/w file' httpd.conf 

在这里插入图片描述
在这里插入图片描述

sed字符替换

替换文档中的第一列:为@ :

sed 's/:/@/' passwd 

在这里插入图片描述
替换文档中的全文的:为@ :

sed 's/:/@/g' passwd 

在这里插入图片描述
替换文档中的1到5行的:为@ :

sed '1,5s/:/@/g' passwd 

在这里插入图片描述
替换文档中的2行的:为@ :

sed '2s/:/@/g' passwd 

在这里插入图片描述
将文档的第三行中的所有:替换成@,将第六行的所有:替换为* :

sed '3s/:/@/g;6s/:/*/g' passwd 

在这里插入图片描述
替换文档中字符adm到halt之间的:为@@:

 sed '/adm/,/halt/s/:/@@@/g' passwd 

在这里插入图片描述
替换文档中的/为##:
/为特殊符号,须转译:

sed 's/\//##/g' passwd 

在这里插入图片描述
或者:

 sed 's@/@##@g' passwd 

在这里插入图片描述

sed 参数 处理对象 -f 处理规则文件:
在这里插入图片描述

3、awk

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值