sed 的正则表达式用于替换

sed 的正则表达式用于替换

我正在创建一个脚本,该脚本检查用户输入的内容,并根据该值在文件中进行替换。

到目前为止我已经(但它不起作用):

#!/bin/bash
read -p "Type your domain: " domain
sed -i -e /\$put\_your\_domain =/ s/= .*/= ${domain}/ /list_of_domains
echo cat list_of_domains | grep '$put_your_domain'

输出:

./t.sh
Type your domain: GOV
sed: -e expression #1, char 17: unterminated address regex

正如您所看到的,我想用任何域类型替换该域。例如,我们有:

$put_your_domain = JUS

我想将“list_of_domains”中的它替换为$put_your_domain = GOV,最后回显它。

答案1

$ grep '$put_your_domain' list_of_domains
$put_your_domain = JUS

$ domain=GOV

$ sed -Ei 's/(\$put_your_domain = ).*/\1'"$domain"'/' list_of_domains

$ grep '$put_your_domain' list_of_domains
$put_your_domain = GOV

要了解 shell 中的引号,请参阅https://mywiki.wooledge.org/Quotes

相关内容