我们可以使用sed用多个变量替换一个变量吗

西瓦马拉

我有一个配置文件,我需要用新值替换整行。它可以是一个词或一个 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所以它应该适用于所有可打印的字符。
  • 记住引用。所有变量都应该在"双引号内,但如果在'单引号内,其余的最好
  • 我将 name= 与 匹配^,所以从行的开头开始。因此,例如blablaabc1=不匹配。
  • 我使用来自 bash 的ANSI-C Quoting 来生成不可编辑的0x01字节来分隔 sed 命令。

sed 脚本的可读性更强的版本可能是这个,它仅"用于引用并~用作分隔符:

 sed "s~^${name}=.*~${name}=${newvalue}~"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我们可以创建一个可以从python中的任何函数修改的变量吗?

斯威夫特:我们需要在使用变量之前声明一个变量吗?

我们可以在C中与变量一起声明一个函数吗?

我们可以使用Ember.js建立一个静态网站吗?

我们可以使用数组的最后一个元素吗?

我们可以使用临时表创建一个永久表吗

我们可以用多个边界框预测变量替换对象检测中的锚定框吗?

我们可以将一个.js文件的变量用于另一个.js文件吗?

解析JSON使用杰克逊:我们可以在一个POJO可选变量

我们有超过一千个变量,但是我们不能计数那么多变量,所以Python中有一个函数可以说出我们有多少个变量吗?

我可以使用变量模板来声明另一个变量模板吗?

我们可以使用一个逻辑表达式一次比较多个字符串吗?

我们可以使用空手道加特林在同一个程序包中运行多个功能文件吗

我们可以使用列表理解来处理所使用的 for 循环之外的变量吗?

我们可以使用名为 _MY_SECRET 的环境变量吗?

替换一个JavaScript变量

用另一个变量的值替换一个变量中的NA

我们可以在Java中为循环内的值分配一个用于循环的变量吗?

我们可以在调用pthread-create()函数之前定义一个变量吗

我们可以在 Python 中注释一个变量,同时避免注释的运行时类型擦除吗?

Flutter - ListView.builder - 我们可以在“索引”旁边添加一个用作“计数器”的变量吗?

我们可以使用一个RowMapper对象而不是每次创建对象来获取结果吗?

我们可以使用虚拟机建立一个对世界开放的服务器吗?

我可以使用另一个类内部的函数中的变量吗?

我们可以使用变量替换而不仅仅是 JSON 或 XML 来更改任何文件类型吗

我们可以在多个数组上使用一个 Array.filter() 方法吗?

在Java中,我们可以将一个类分为多个文件吗?

我们可以在java中的一个类中有多个静态锁吗

我们可以将多个更新sql合并为一个sql吗?