【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编辑器命令。

相关推荐
知已难寻5 小时前
Docker 入门:容器技术与 Docker 基础
java·运维·服务器·docker·云原生·容器
默|笙5 小时前
【Linux网络】网络层协议 IP(1)理解报头、网段划分
linux·网络·tcp/ip
修己xj7 小时前
nslookup 使用指南:两种模式与常用查询技巧
linux
唠玖馆9 小时前
文件系统详解
linux·文件系统·ext2
GeW10 小时前
当Linux内核开始“确定性”,制造高端化才有了底层语法
linux
星恒随风11 小时前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql
Alluxio12 小时前
Alluxio + OCI:为 AI 工作负载实现亚毫秒访问延迟与可扩展吞吐
运维·数据库·人工智能·分布式·缓存·ai·语言模型
StarsGreen13 小时前
libva在intel平台上的前端流程简介
linux
慧都产品智能化14 小时前
Qt 表格升级攻略:复用已有编辑器,减少重复开发
c++·qt·编辑器·qt6.3
坤坤子吖16 小时前
Linux网络编程:自定义应用层协议与 JSON 序列化
linux·服务器·网络·c++·笔记·json