📜  Linux 中的 SED 命令 | 2套(1)

📅  最后修改于: 2023-12-03 15:02:43.624000             🧑  作者: Mango

Linux 中的 SED 命令

简介

SED(Stream Editor)是一个非交互式的流式文本编辑器,使用类似于正则表达式的语法进行文本处理。SED 命令可用于编辑、过滤、替换等各种文本操作。

用法
命令格式

SED 命令一般的格式为:

sed options script file

其中,options 指定了 SED 命令的选项,script 指定要执行的 SED 脚本,file 指定要处理的文件路径或标准输入流。

常用选项
  • -n:关闭默认输出,只输出经过处理的内容;
  • -i:直接修改文件内容,不打印到标准输出流;
  • -e:指定要执行的 SED 脚本。
SED 脚本格式

SED 脚本由一系列命令以及可选的地址构成。命令可以是删除、替换、输出等各种操作,地址指定要对哪些行进行处理。

SED 脚本格式如下:

[address1[,address2]]<command1>
[address1[,address2]]<command2>
...

其中,address1 和 address2 分别指定了要处理的行的起始和结束位置,可以是正整数、正则表达式、字符范围等等,如果不指定地址则默认对所有行进行处理。

command1、command2 等为要执行的命令,可以是 s(替换)、d(删除)、p(输出)等,也可以是带参数的命令。

例子

下面介绍两个常用的 SED 命令用法。

替换文件中的内容

假设要将文件 example.txt 中所有的 foo 替换为 bar,可以使用以下命令:

sed 's/foo/bar/g' example.txt

其中,s 表示替换命令,g 表示全局替换,即每一行都进行替换。

提取匹配行的内容

假设要从文件 example.txt 中提取所有包含 foo 字符串的行,可以使用以下命令:

sed -n '/foo/p' example.txt

其中,-n 选项指定关闭默认输出,/foo/p 表示在匹配到包含 foo 的行时输出该行的内容。