shell学习6

一.sed流编译器

sed编译器与尝使用的交互式编译器不同,其以批处理的方式编辑文件,运行速度更快一些。
处理过程:

  • 其一次处理一行,先将当前一行内容存储在临时缓冲区
  • 用sed命令处理缓冲区中的内容
  • 最后将缓冲区的内容送往屏幕

1.命令格式

sed的退出状态都是0,只有当命令存在语法错误式,sed的退出状态才是非0

sed [参数] 命令 [文件]

其命令支持正则表达式

参数和命令说明
-n只输出被sed处理过的一行,没有则全部输出
-e允许多点编辑
-f直接将sed动作写在一个档案中
-i直接修改读取的档案内容,而不用屏幕输出
a\新增,a后面接字符串,其会添加到下一行中
c\取代,取代改行中的内容
d删除
i\插入,会将后面添加的字符串添加到上一行

2.sed命令使用

文本替换:

# 将文件中第一个srcStr替换为dstStr
sed 's/srcStr/dstStr' 文件
# 可以将/分隔符替换为 ! 和 # 

# 将文件中第三个srcStr替换为dstStr
sed 's/srcStr/dstStr/3' 文件

# 将文件中所有srcStr替换为dstStr
sed 's/srcStr/dstStr/g' 文件

# 将文件中srcStr替换为dstStr,并打印出匹配到的一行
sed 's/srcStr/dstStr/p' 文件

# 将文件中所有srcStr替换为dstStr,并修改的行保存到change文件中
sed 's/srcStr/dstStr/g w change.txt' 文件

行寻址替换:

# 将文件中第三行中的所有srcStr替换为dstStr
sed '3 s/srcStr/dstStr/g' 文件

# 将文件中第三行到第五行中所有srcStr替换为dstStr
sed '3,5 s/srcStr/dstStr/g' 文件

文本模式过滤器:

必须要在文本前面添加 / 符号

# 寻找到含有root的行,并将其中的的所有srcStr替换为dstStr
sed '/root/s/srcStr/dstStr/g' 文件

2.模式空间和保持空间

  • 模式空间和保持空间是两个独立的缓冲区,可以进行交互,命令可以寻址模式空间,但不能寻址保持空间
  • 模式空间:容纳当前输入行的缓冲区,通过模式匹配到的行被读入模式空间中
  • 保持空间:作为一个辅助的缓冲区,可以和模式空间进行交互,但命令不能直接作用于保持空间,可以通过h,H,g,G与模式空间进行交互
    • h:把模式空间中的内容覆盖到保持空间中
    • H:把模式空间中的内容追加到保持空间中
    • g:从保持空间中取出数据覆盖到模式空间中
    • G:从保持空间中取出数据追加到模式空间中

搞钱的第十八天,加油

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值