sed 是 Linux 和 Unix 系统中常用的流编辑器(stream editor),用于对文本进行处理和转换。它能够基于模式匹配进行插入、删除、替换、和修改操作。以下是 sed 的详细解释和一些具体的示例。

sed 的基本用法

sed 的基本语法格式如下:

sed 'command' file
  • command 是对文件中匹配模式的操作命令。
  • file 是要处理的文件。

基本命令和示例

1. 替换文本

命令:

sed 's/pattern/replacement/' file

示例:
假设有一个文件 data.txt 内容如下:

Hello world
Hello sed

使用以下命令将 "Hello" 替换为 "Hi":

sed 's/Hello/Hi/' data.txt

输出:

Hi world
Hi sed

2. 替换文件中的所有匹配项

默认情况下,sed 只替换每行中的第一个匹配项。要替换所有匹配项,需要使用 g 标志。

命令:

sed 's/pattern/replacement/g' file

示例:
假设 data.txt 内容如下:

Hello Hello world
Hello Hello sed

使用以下命令将所有 "Hello" 替换为 "Hi":

sed 's/Hello/Hi/g' data.txt

输出:

Hi Hi world
Hi Hi sed

3. 在特定行进行替换

命令:

sed 'N s/pattern/replacement/' file

示例:
假设 data.txt 内容如下:

Hello world
Hello sed

使用以下命令只替换第二行的 "Hello":

sed '2 s/Hello/Hi/' data.txt

输出:

Hello world
Hi sed

4. 删除文本行

命令:

sed 'N d' file

示例:
假设 data.txt 内容如下:

Hello world
Hello sed

使用以下命令删除第二行:

sed '2 d' data.txt

输出:

Hello world

5. 插入文本行

命令:

sed 'N i\text' file

示例:
假设 data.txt 内容如下:

Hello world
Hello sed

使用以下命令在第二行前插入一行 "Hi there":

sed '2 i\Hi there' data.txt

输出:

Hello world
Hi there
Hello sed

6. 附加文本行

命令:

sed 'N a\text' file

示例:
假设 data.txt 内容如下:

Hello world
Hello sed

使用以下命令在第二行后附加一行 "Goodbye":

sed '2 a\Goodbye' data.txt

输出:

Hello world
Hello sed
Goodbye

7. 替换文本中的特定模式

命令:

sed '/pattern/ s/old/new/' file

示例:
假设 data.txt 内容如下:

Hello world
Goodbye world
Hello sed

使用以下命令只在包含 "Hello" 的行中将 "world" 替换为 "everyone":

sed '/Hello/ s/world/everyone/' data.txt

输出:

Hello everyone
Goodbye world
Hello everyone

结合多个命令

可以使用 -e 选项来组合多个 sed 命令:
命令:

sed -e 'command1' -e 'command2' file

示例:
假设 data.txt 内容如下:

Hello world
Goodbye world
Hello sed

使用以下命令同时替换 "Hello" 和 "Goodbye":

sed -e 's/Hello/Hi/' -e 's/Goodbye/Bye/' data.txt

输出:

Hi world
Bye world
Hi sed

sed 是一个功能强大的文本处理工具,通过模式匹配进行插入、删除、替换和修改操作。通过掌握 sed 的基本和高级用法,可以极大地提高文本处理的效率和能力。

本文由mdnice多平台发布


逼格高的汤圆
7 声望2 粉丝