📅  最后修改于: 2023-12-03 14:39:27.834000             🧑  作者: Mango
在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
参数表示多行替换。