不求甚解

此博客为个人学习之用,如与其他作品雷同,纯属巧合。

导航

shell脚本sed命令

Posted on 2021-03-30 17:03  三年三班王小朋  阅读(165)  评论(0编辑  收藏  举报

Sed 是一个脚本型的编译器,全称StreamEDitor,即流编辑器是非交互式的编辑器

sed 原理简析
sed 以行为处理单位,每次从标准输入/文本获取一行信息,存储到其“ 模式空间 ”(pattern space,实际上是一个临时缓冲区)中,在这个模式空间中,sed 就会将脚本中的处理命令做完,然后就将处理完的数据输出到标准输出(屏幕)

sed 的特点

  • 非交互,基于模式匹配的过滤及修改文本
  • 逐行处理,所以那些对舒适的交互式编辑而言太大的文件使用sed 会显得格外有优势
  • 可实现对文本的输出、删除、替换、复制、剪切、导入、导出等各种编辑操作
  • 脚本化

语法   sed [-hnV] [-e<script>] [-f<script文件>] [文本文件]

参数说明

  • -e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件,允许多重编辑。
  • -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
  • -i直接在原文件中操作。使用 -i 选项时,都要使用 "-i.***" 形式备份  例如:-i.bak!
  • -r在脚本中使用扩展正则表达式。
  • -n或--quiet或--silent 仅显示script处理后的结果。
  • --version 显示版本信息。
  • -h或--help 显示帮助。

动作说明

  • a :新增(append), a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
  • c :取代(change), c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
  • d :删除(delete),因为是删除啊,所以 d 后面通常不接任何咚咚;
  • i :插入(insert), i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
  • p :打印(print),亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
  • s :取代(subsitute),可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!

 练习实例

sed -n '3p' text.txt  匹配text.txt文档第3行的内容

sed -n '2,5p' text.txt  匹配text.txt文档第 2至5行的内容

 sed -n '/a/,3p'   text.txt   匹配text.txt文档首个a 及下面3行之间的内容

 sed -n '/a/,$p'   text.txt   匹配text.txt文档首个a 至行尾内容

 sed -n '/a/,/b/p'   text.txt   匹配text.txt文档首个a 下面首个b之间的内容