📜  bash sed 替换多个字符串 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:39:27.834000             🧑  作者: Mango

Bash Sed 替换多个字符串

在Shell脚本中,使用sed命令可以方便地替换字符串。下面介绍如何使用sed命令替换多个字符串。

替换单个字符串

首先,我们先回顾下如何替换单个字符串。假设我们有一个文件test.txt,内容如下:

hello world

我们想要将其中的hello替换为hi,可以使用如下命令:

sed 's/hello/hi/' test.txt

执行结果为:

hi world

其中,s表示替换(substitute),hello表示要被替换的字符串,hi表示替换后的字符串,/为分隔符。

替换多个字符串

接下来,我们来看如何替换多个字符串。假设我们有一个文件test.txt,内容如下:

hello world
crystal liu

我们想要将其中的hello替换为hi,同时将liu替换为li,可以使用如下命令:

sed 's/hello/hi/;s/liu/li/' test.txt

执行结果为:

hi world
crystal li

其中,多个s命令通过;分隔。

替换多个字符串(简写)

上述命令虽然可行,但当要替换的字符串数量较多时,命令会变得冗长不易读。幸运的是,sed提供了一种简写方式。

假设我们要将hello替换为hi,将liu替换为li,将world替换为earth,可以使用如下命令:

sed 's/hello/hi/;s/liu/li/;s/world/earth/' test.txt

执行结果为:

hi earth
crystal li
替换多个字符串(在不同行)

以上命令都是基于同一行的字符串进行替换。如果要在文本中不同的行中替换多个字符串,可以使用-e参数。

假设我们有一个文件test.txt,内容如下:

hello world
crystal liu

我们想要将其中的hello替换为hi,同时将liu替换为li,可以使用如下命令:

sed -e 's/hello/hi/' -e 's/liu/li/' test.txt

执行结果为:

hi world
crystal li

其中,多个-e参数表示多行替换。