我有一个配置文件,我需要用新值替换整行。它可以是一个词或一个 URL。我正在尝试编写一个脚本来仅用新值替换此特定参数。
我尝试使用grep
参数提取行并将值分开并保存在两个不同的变量中。现在我试图用参数以及新值或 url usind 替换整行sed
jaram=`grep -i "$a" app.properties`;
param=`grep -i "$a" app.properties |sed 's/\'$a'=*//'`;
sed -e 's~'$jaram'~'$a=''$changed_param'~g' app.properties
配置文件包含:
abc1=http://howareyou:scema=olk
abc2=http://howareyou:scema=olk
在这里,我试图替换 only 的 url abc1
。虽然两者具有相同的价值。我需要用不同的网址或单词替换整个网址。
在这里,我试图找到包含保存在不同变量中的abc1
行 url 之后的行=
。
我尝试使用 sed 用新的 url 替换 url:
sed -i 's~'$jaram'~'$a=''$param'~g' app.properties
sed: -e expression #1, char 0: no previous regular expression
似乎我在使用时在某些语法上做错了 sed
试图替换类似的东西
sed 's/jaram/'{$a=$param}/'
期待像这样的输出
abc1=http://jalkek:kj/iuwerj
abc2=http://howareyou:scema=olk
以下带有注释的脚本:
# recrete the input config file
cat <<EOF >input
abc1=http://howareyou:scema=olk
abc2=http://howareyou:scema=olk
EOF
# some input variables
name="abc1"
newvalue='http://jalkek:kj/iuwerj'
# the sed script
sed -i 's'$'\01''^'"$name"'=.*'$'\01'"$name"'='"$newvalue"$'\x01' input
# and the output
cat input
产生以下输出:
abc1=http://jalkek:kj/iuwerj
abc2=http://howareyou:scema=olk
笔记:
0x01
字节作为s
内部命令的分隔符sed
。所以它应该适用于所有可打印的字符。"
双引号内,但如果在'
单引号内,其余的最好。^
,所以从行的开头开始。因此,例如blablaabc1=
不匹配。0x01
字节来分隔 sed 命令。sed 脚本的可读性更强的版本可能是这个,它仅"
用于引用并~
用作分隔符:
sed "s~^${name}=.*~${name}=${newvalue}~"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句