分享

Linux系统Shell精讲九、sed

 苏醒的贝壳 2019-01-01

定义

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

处理过程

Linux系统Shell精讲九、sed

  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

Linux系统Shell精讲九、sed

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

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

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

Linux系统Shell精讲九、sed

第一个匹配

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

Linux系统Shell精讲九、sed

匹配的个数不够就不替换

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

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

Linux系统Shell精讲九、sed

只第一行匹配

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

Linux系统Shell精讲九、sed

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

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

Linux系统Shell精讲九、sed

1行-4行替换

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

Linux系统Shell精讲九、sed

多个action以“;”分隔

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

Linux系统Shell精讲九、sed

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

Linux系统Shell精讲九、sed

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

Linux系统Shell精讲九、sed

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

Linux系统Shell精讲九、sed

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

Linux系统Shell精讲九、sed

结语

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多