【Linux】sed编辑器

一、基本介绍

sed编辑器也叫流编辑器(stream editor),它是根据事先设计好得一组规则编辑数据流。

交互式文本编辑器(如Vim)中,可以用键盘命令交互式地插入、删除或替换文本数据。

sed编辑器是根据命令处理数据流中的数据,这些命令来自于命令行输入,或者来自于保存在命令文本文件中。它可以执行以下操作:

  1. 从输入中读取一行数据;
  2. 根据所提供的编辑器命令匹配数据;
  3. 按照命令修改数据流中的数据;
  4. 将新的数据输出到STDOUT

sed编辑器匹配并针对一行数据执行所有命令后,就会读取下一行数据并重复这个过程,在它处理完数据流中的所有行后,就结束运行。

由于命令是按顺序逐行执行的,因此sed编辑器只需对数据流处理一遍(one pass through)即可完成编辑操作。这使得sed编辑器比交互式编辑器快得多,还可以快速完成对数据的自动修改。

格式:

sed options script file

script:制定了应用于流数据中的单个命令。如果需要多个命令,可以使用 -e 选项在命令行中指定;或者使用 -f 选项在单独的文件中指定。

|-----------------|-----------------------------|
| -e commands | 在处理输入时,加入额外的sed命令 |
| -f file | 在处理输入时,将file中指定的命令添加到已有的命令中 |
| -n | 不产生命令输出,使用p(print)命令完成输出 |
[sed命令选项]

二、处理文本

1、在命令行中使用单个sed编辑器命令

默认情况下,sed编辑器会将指定的命令应用于STDIN输入流中,所以可以直接将数据通过管道符传入sed编辑器进行处理。

替换命令:s;使用它可以将斜线间指定的第二个字符串替换掉第一个字符串。

bash 复制代码
echo "这是1个测试" | sed 's/1个/2个/'

批量替换文件中某个字符:

bash 复制代码
sed 's/成都/苏州/' test.txt

而且,sed编辑器并不会修改文本文件的数据,它只是将修改后的数据发送到STDOUT。

查看文本文件内容,依然未变。

2、在命令行中使用多个sed编辑器命令

如果想执行多个命令,可以使用 -e 选项。

多个命令都会应用于文件的每一行数据,命令之间必须要用分号(;)分隔开,并且命令末尾和分号之间不能出现空格。

bash 复制代码
sed -e 's/贵州/成都/;s/北京/广州/' test.txt

也可以用bash shell中的次提示符来分隔命令。

必须要在闭合的单引号所在行结束命令。因为bash shell一旦发现了闭合单引号,就会执行命令。

3、从文件中读取sed编辑器命令

可以使用 -f 选项来读取文件中的sed编辑器命令。

相关推荐
studytosky6 分钟前
Linux系统编程:深度解析 Linux 进程,从底层架构到内存模型
linux·运维·服务器·开发语言·架构·vim
java_logo18 分钟前
Crawl4AI Docker 容器化部署指南
运维·docker·容器·crawl4ai·crawl4ai部署文档·crawl4ai部署教程·crawl4ai部署
wdfk_prog28 分钟前
[Linux]学习笔记系列 -- [fs]buffer
linux·笔记·学习
Stella252140 分钟前
实习日志|知识总结
linux·服务器·软件测试·数据库
weixin_4624462344 分钟前
【原创实践】使用 shell 脚本批量创建 Linux 用户并生成随机密码
linux·服务器·前端
可爱又迷人的反派角色“yang”1 小时前
redis知识点总集
linux·运维·数据库·redis·缓存
海奥华21 小时前
进程调度算法 笔记总结
linux·运维·服务器·笔记·学习
梦幻精灵_cq1 小时前
Linux.date格式化标识“制作”极简台历 vs Python.datetime.strftime格式化“精美”日历牌(时间工具依情境选择也是一种“智慧)
linux·python
864记忆1 小时前
Linux操作系统自带的测试内存泄漏的命令
java·linux·运维
大柏怎么被偷了1 小时前
【Linux】文件系统
linux·运维·数据库