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

相关推荐
hfut028821 小时前
第25章 interface
linux·服务器·网络
Sinowintop1 天前
易连EDI-EasyLink SFTP文件传输
运维·服务器·网络·sftp·edi·ftp·国产edi软件
风123456789~1 天前
【Linux专栏】显示或隐藏行号、批量注释
linux·运维·服务器
谢尔登1 天前
简单聊聊webpack摇树的原理
运维·前端·webpack
只想安静的写会代码1 天前
centos/ubuntu/redhat配置清华源/本地源
linux·运维·服务器
susu10830189111 天前
ubuntu多块硬盘挂载到同一目录LVM方式
linux·运维·ubuntu
r***F2621 天前
【漏洞复现】CVE-2019-11043(PHP远程代码执行漏洞)信息安全论文_含漏洞复现完整过程_含Linux环境go语言编译环境安装
linux·golang·php
行走的陀螺仪1 天前
.vscode 文件夹配置详解
前端·ide·vscode·编辑器·开发实践
smaller_maple1 天前
linux问题记录1
linux·运维·服务器
报错小能手1 天前
讲讲libevent底层机制
linux·服务器