SHELL脚本中的文本处理工具(grep,sed,awk)

74 篇文章 0 订阅
26 篇文章 0 订阅

grep
过滤关键字符
grep -e=egrep
grep参数
vim file
在这里插入图片描述

grep westos file:过滤westos关键字
在这里插入图片描述
grep ^westos file :过滤以westos开头的关键字
在这里插入图片描述
grep westos$ file :过滤以westos结尾的关键字
在这里插入图片描述
grep -i westos file:过滤westos关键字并且忽略大小写
在这里插入图片描述
grep -E “\<westos” file:过滤westos关键字并且前边不能有字符
在这里插入图片描述

grep -E “\westos\>” file:过滤westos关键字并且后边不能有字符
在这里插入图片描述
grep -数字:显示过滤行下面几行以及上面几行
在这里插入图片描述
grep -n :显示过滤行所在行号
在这里插入图片描述
grep -A:显示过滤行以及下面几行
在这里插入图片描述
grep -B:显示过滤行以及上面几行
在这里插入图片描述
grep -v :反向过滤(除了关键字符其余都显示)
在这里插入图片描述
grep字符数量匹配规则
vim file

^westos:以westos开头
westos$:以westos结尾
w…s:以w开头s结尾中间任意四个字符
在这里插入图片描述

…s:以s结尾前边任意五个字符
在这里插入图片描述

*:字符出现任意一次
在这里插入图片描述

?:0-1次
在这里插入图片描述
+:1到任意次
在这里插入图片描述
{n}:指定次
在这里插入图片描述
{m,n}:m到n次
在这里插入图片描述
{0,n}:0到n次
在这里插入图片描述
{,n}:0到n次
在这里插入图片描述
{m,}:最少m次
在这里插入图片描述
(ab){2}:ab字符串出现两次
vim file
在这里插入图片描述

在这里插入图片描述
练习脚本:显示系统中能被su命令切换的用户名称
在这里插入图片描述
sed
命令格式
sed 参数 命令 处理对象
sed 参数 处理对象 -f 处理规则文件
对字符的处理
实验文件:cp /etc/passwd .
cat -n passwd | tee passwd
vim passwd
在这里插入图片描述

p:打印,显示
sed 5p passwd

在这里插入图片描述
-n:不显示其他内容
在这里插入图片描述
sed -n 3,5p passwd:显示第三行到第五行的内容
在这里插入图片描述
sed -ne “3p;5p” passwd:显示第三行和第五行的内容
在这里插入图片描述

sed -ne ‘5,$p’ passwd:显示第五行到最后一行
在这里插入图片描述
sed -n ‘/^#/p’ /etc/fstab:显示以#开头的行
在这里插入图片描述

d:删除
ded 5d passwd:删除第五行
在这里插入图片描述
sed ‘/^#/d’ fstab :删除#开头的行
在这里插入图片描述
sed ‘/^UUID/!d’ fstab:除了UUID开头的行删除
在这里插入图片描述
sed ‘3,$d’ passwd :删除第三行到最后一行
在这里插入图片描述

sed ‘3d;$d’ passwd:删除第三行和最后一行
在这里插入图片描述

a:添加
sed -e ‘$a hello linux’ fstab :在最后一行添加hello linux
在这里插入图片描述

sed -e ‘$a hello\nlinux’ fstab:在最后一行换行加入hello linux
在这里插入图片描述
sed -e ‘/^#/a hello linux’ fstab:在所有#开头的行加入hello linux
在这里插入图片描述

c:替换
sed -e ‘/^#/c hello linux’ fstab:把所有以#开头的行替换成hello linux
在这里插入图片描述

sed ‘5c hello linux’ passwd:把第五行替换成hello linux
在这里插入图片描述
w:写入(覆盖)
sed ‘/^UUID/w passwd’ fstab:把fstab中以UUID开头的行写入到passwd中(覆盖)
在这里插入图片描述
i:插入
sed ‘1i hello westos’ fstab:在第一行插入hello westos
在这里插入图片描述
r:整合
sed ‘5r fstab’ passwd:把fstab整合到passwd文件的第五行
在这里插入图片描述
-i:导入
sed ‘1i hello linux’ -i fstab:在fstab第一行前插入hello linux 并导入fstab文件
在这里插入图片描述
sed字符替换
sed ‘s/😕#/g’ passwd :把passwd全文的:替换成#
在这里插入图片描述
sed ‘s/: /#/’ passwd:把passwd全文第一个:替换成#
在这里插入图片描述
sed ‘5s/: /#/g’ passwd :把第五行的:替换成#
在这里插入图片描述

sed ‘1,5s/: /#/g’ passwd:把第一行到第五行的:替换成#
在这里插入图片描述
sed ‘1s/: /#/g;5s/: /#/g’:第一行和第五行的:替换成#
在这里插入图片描述
sed ‘s/ \ //#/g’ passwd :把全文的/替换成#
在这里插入图片描述
sed ‘s@/@#@g’ passwd :把全文的/替换成#(@=/)
在这里插入图片描述
练习脚本:Apache_port.sh
此脚本后介入数字
http的端口就改为此数字
假设selinux为关闭状态
vim Apache_port.sh
在这里插入图片描述
脚本测试
在这里插入图片描述
awk
awk -F 分隔符 BEGIN{ }{ }END{ } FILENAME
默认分隔符为空格
NR:行数
NF:列数
在这里插入图片描述

FILENAME:文件名称本身
westos:westos变量值
“westos”:westos字符串
/bash$/:条件
/条件1|条件2/:条件1或者条件2
/条件1/||/条件2/:条件1或者条件2
/条件1/&&/条件2/:条件1并且条件2
$0:所有的列
$1:第一列
$2:第二列
$3:第三列
awk -F : ‘$6!~/home/&&/bash$/{print $0}’ /etc/passwd :在/etc/passwd中查看第六列没有home关键字并且以bash结尾输出整行
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值