打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Linux系统Shell精讲九、sed

定义

sed是非交互式文本工具,相对于vim交互式文本工具。

处理过程

  1. 将当前正在处理的行保存到一个临时缓冲区(模式空间)
  2. 处理临时缓冲区的行,并发送到屏幕上
  3. 删除临时缓冲区的行,将文本中下一行保存到临时缓冲区
  4. 处理临时缓冲区的行,即②步
  5. 处理完文件最后一行,sed结束运行

用法

sed [option] 'action' [file]

option

  • -n仅显示script处理后的结果
  • -e 允许对输入数据应用多条sed命令进行编辑
  • -f直接将sed的命令写在一个文件中,-f filename就可以运行文件中sed动作

action

  • s 字符串匹配/查找
  • i 编辑
  • d删除
  • a追加
  • c替换
  • p打印指定的输出行

例子

  • 将文件每行的LINUX替换为World, 命令

sed 's/LINUX/world/g' sed.txt

成功替换,并且原文件没有改变

g的含义是整行都替换,如果是数字代变第几个匹配替换

sed 's/LINUX/world/1' sed.txt

第一个匹配

sed 's/LINUX/world/3' sed.txt

匹配的个数不够就不替换

s前面加数字,表示第几行匹配替换

sed '1s/LINUX/WORLD/1' sed2.txt

只第一行匹配

sed '2s/LINUX/WORLD/1' sed2.txt

第二行匹配失败,不会再去下一行匹配替换

sed '1,4s/LINUX/WORLD/g' sed2.txt

1行-4行替换

sed '4s/LINUX/WORLD/1;4s/LINUX/WORLD/2' sed2.txt

多个action以“;”分隔

sed -e '4s/LINUX/WORLD/1' -e '4s/LINUX/WORLD/2' sed2.txt

  • 直接替换原文件中内容
sed -i 's/LINUX/WORLD/g' sed2.txt

  • 在第一行插入
sed '1i hello world ' sed2.txt

  • 在第一行追加
sed '1 a hello world ' sed2.txt

  • 删除匹配行
sed '/aa/d' sed2.txt

结语

如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!因为文件太大了!那怎办?就利用 sed 啊!透过 sed 直接修改/取代的功能,你甚至不需要使用 vim 去修订!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【Linux面试题5】文件编辑和查找类
为什么说每个 Linux 极客都需要了解 Sed 和 Awk
在linux下 怎么把一个文件的内容复制到另一个文件的末尾
Linux中删除文件内空行的4种方法
Linux怎么显示文件开头几行的内容?
sed命令详解 - 技术文档 - 系统管理 Linux时代 - 开源、自由、共享 - 中国最大的Linux技术社区
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服