shell中的文本处理工具

1、grep
默认贪婪模式;只要字符相符就找出来
grep -E = egrep

grep格式:
grep 匹配条件 处理文件
在这里插入图片描述
grep root hello #过滤hello中的关键字root
在这里插入图片描述
grep ^root hello #以root开头
在这里插入图片描述
grep root$ hello #以root结尾
grep -i root hello #忽略大小写
在这里插入图片描述
grep -E “root|mail” hello #同时筛选root和mail
在这里插入图片描述
grep -E “<root” hello #root字符之前不能有字符
grep -E “root>” hello #root字符之后不能有字符
在这里插入图片描述
grep -2 root hello #显示过滤行以及上面的2行和下面的2行
在这里插入图片描述
grep -n #显示匹配的行所在行号
grep -A2 root hello #显示过滤行以及下面的2行
grep -B2 root hello #显示过滤行以及上面的2行
在这里插入图片描述
grep -v root hello #反向过滤
在这里插入图片描述

grep字符数量匹配规则
^westos #以westos开启
westos$ #以westos结尾
w…s #w开头s结尾中间4个任意字符
…s #s结尾前面5个任意字符
* #字符出现任意次数,包括0
? #0到1次
+ #1次到任意次
{n} #n次
{m,n} #m到n次
{0,n} #0到n次
{,n} #0到n次
{m,} #最少m次
(lee){2} #lee字符串出现2次

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

2、sed
命令格式
sed 参数 命令 处理对象
sed 参数 处理对象 -f 处理规则文件

对字符的处理
p #显示
sed -n 5p westos #显示第五行
sed -n 3,5p westos #显示3到5行
sed -ne ‘3p;5p’ westos #显示3行和5行
sed -ne 1,5p westos #显示1-5行
sed -ne ‘5,$p’ westos #显示5到最后一行
sed -n ‘/^#/p’ fstab #显示以#开头的行

d #删除
sed 5d westos #删除第五行
sed ‘/^#/d’ fatab #把#开头的行删掉
sed ‘/^UUID/!d’ fstab #除了UUID以外的行,都删掉
sed -e ‘5,$d’ westos #-e为扩展的意思,删除5到无穷行

a #添加
sed -e ‘$a hello world’ fstab
sed -e ‘$a hello\nworld’ fstab
sed -e ‘/^#/a hello world’ fstab #在#开头的行添加hello world

c #替换
sed -e ‘/^#/c hello world’ fstab #以#开头的行替换为hello world
sed ‘5chello world’ westos #将第五行替换为hello world

w #把符合的行写到指定文件中
sed ‘/^UUID/w westosfile’ westos #把westos中UUID开头的行写入westosfile中

i #插入
sed ‘5ihello westos’ westos #第五行插入hello westos

r #整合文件
sed ‘5r haha’ westos #把haha的内容整合到westos的第五行

sed 字符替换

sed 's/:/###/g' westos       #把westos文件中所有的:替换成###
sed 's/:/###/' westos			#把westos文件中的所有的行但第一列的:替换为###
sed 's/:/###/g'  westos
sed '1,5s/:/###/g' westos
sed '1s/: /###/g' westos
sed '/lp/,/shutdown/s/:/###/g' westos
sed 's/\//###/g' westos
sed 's@/@####@g' westos

sed 's@/@####@g' -i westos

sed -f westos passwd
sed -n 5p westos
在这里插入图片描述
在这里插入图片描述
sed -ne ‘5p;7p’ westos
在这里插入图片描述
sed -ne ‘5,$p’ westos
在这里插入图片描述

sed -ne ‘1,5p’ westos
在这里插入图片描述
sed -ne ‘/we/p’ westos #以we开头的行
在这里插入图片描述
sed ‘5,$d’ westos
sed ‘/wes/d’ westos
在这里插入图片描述

sed ‘/^$/d’ fstab
在这里插入图片描述

sed ‘/^$/d’ fstab -i fstab
在这里插入图片描述

sed ‘1ahello westos’ fstab -i fstab
在这里插入图片描述
sed ‘1ahello westos’ fstab
在这里插入图片描述
sed ‘/^#/ahello westos’ fstab
在这里插入图片描述
sed ‘1ihello westos’ fstab
在这里插入图片描述
sed ‘/^#/c""’ fstab
在这里插入图片描述
sed ‘/^#/w westos’ fstab
在这里插入图片描述
sed ‘2r westos’ fstab #把westos的内容整合到fatab第2行
在这里插入图片描述

sed ‘s/sbin/westos/g’ passwd
在这里插入图片描述
sed ‘5,7s/sbin/westos/g’ passwd
在这里插入图片描述
sed ‘/lp/,/halt/s/sbin/westos/g’ passwd
在这里插入图片描述
sed -e ‘s/sbin/westos/g;s/nologin/lee/g’ passwd
在这里插入图片描述
sed -e ‘s///####/’ passwd #\为了转译/
在这里插入图片描述
sed -e ‘s@/@####@’ passwd #如果不想转译,可用@符号
在这里插入图片描述
测试:
显示系统中能被su命令切换的用户名称
在这里插入图片描述

noh #在vim中取消高亮

3、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}’ /etc/passwd
#/etc/passwd文件的第六列没有home关键字并且以bash结尾的行

awk -F : ‘{print HELLO}’ passwd
awk -F : ‘{print $1}’ passwd
在这里插入图片描述
awk -F : ‘{print $0}’ passwd
在这里插入图片描述
awk -F : ‘{print $2}’ passwd
在这里插入图片描述
awk -F : ‘BEGIN{print “WESTOS”}{print $1}’ passwd
在这里插入图片描述
awk -F : ‘BEGIN{print “WESTOS”}{print $1}END{print “END”}’ passwd
在这里插入图片描述
awk -F : ‘BEGIN{print “WESTOS”}{print NR}END{print “END”}’ passwd
在这里插入图片描述
awk -F : ‘BEGIN{print “WESTOS”}{print Nf}END{print “END”}’ passwd
在这里插入图片描述
awk -F : ‘BEGIN{print “WESTOS”}{print FILENAME}END{print “END”}’ passwd
在这里插入图片描述

awk -F : ‘BEGIN{print “WESTOS”}/bash$/{print $1,$7}END{print “END”}’ passwd
在这里插入图片描述

awk -F : ‘BEGIN{print “WESTOS”}/bash$/&&/root/{print $1,$7}END{print “END”}’ passwd
awk -F : ‘BEGIN{print “WESTOS”}/bash$/||/root/{print $1,$7}END{print “END”}’ passwd

awk -F : ‘$7-//bin/bash/{print $0}’ passwd
awk -F : ‘$7!-//bin/bash/{print $0}’ passwd
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值