sed只替换第一次出现的字符串

khe*_*aud 1 sed

我用来sed从模板文件创建文件.我无法弄清楚man sed,为什么它不会改变所有匹配的字符串.

如果我的文件(template_file.txt)包含:

#!/bin/sh
#
# /etc/init.d/%SCRIPT_NAME% - Startup script for play %SCRIPT_NAME% engine
#
### BEGIN INIT INFO
[...]
EOF
Run Code Online (Sandbox Code Playgroud)

使用:

sed -e "s;%SCRIPT_NAME%;script_test_name;" template_file.txt > script_test_name
Run Code Online (Sandbox Code Playgroud)

Produces(script_test_name):

#!/bin/sh
#
# /etc/init.d/script_test_name - Startup script for play %SCRIPT_NAME% engine
#
### BEGIN INIT INFO
[...]
EOF
Run Code Online (Sandbox Code Playgroud)

我看到,对于要替换2次字符串的行,只替换第一个.

你能给我一个如何解决的提示吗?

gee*_*aur 5

s除非您向其添加g(全局)修改器,否则该命令仅更改第一次出现.

sed -e "s;%SCRIPT_NAME%;script_test_name;g" template_file.txt > script_test_name
Run Code Online (Sandbox Code Playgroud)