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之间的内容