标题说明了一切。我需要将我不知道的属性值替换为不同的值。
我正在尝试这个:
#!/bin/bash
sed -i "s/myprop=[^ ]*/myprop=$newvalue/g" file.properties
i get sed: -e expression #1, char 19: unknown option to
s'`
我认为问题在于$newvalue
是一个代表目录的字符串,因此它会弄乱 sed。
我能做些什么 ?
如果您的属性文件是用分隔符分隔的=
像这样签名——
param1=value1
param2=value2
param3=value3
那么你可以使用awk
修改参数值只要知道参数名称。例如,如果我们想修改param2
在您的财产文件中,我们可以执行以下操作 -
awk -F"=" '/^param2/{$2="new value";print;next}1' filename > newfile
现在,以上one-liner
要求你硬代码参数的新值。如果您在 shell 脚本中使用它并且需要从变量获取新值,则情况可能并非如此。
在这种情况下,您可以执行以下操作 -
awk -F"=" -v newval="$var" '/^param2/{$2=newval;print;next}1' filename > newfile
在此我们创建一个awk
多变的newval
并使用包含新参数值的脚本变量 ($var) 对其进行初始化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)