用bash变量替换sed
尝试使用sed在文本文件中更改bash脚本中的值,
sed 's/draw($prev_number;n_)/draw($number;n_)/g' file.txt > tmp
这将在for循环。 不知道为什么它不工作。 有什么建议么?
'
里面'
变量不被bash替换。 要获得字符串替换(或插值,如果你熟悉Perl),你需要改变它使用双引号"
而不是单引号:
sed "s/draw($prev_number;n_)/draw($number;n_)/g" file.txt > tmp
另外,除非你在不同的文件中需要它,你可以使用-i
标志来改变文件。
单引号内的变量不会扩展,在双引号内,在这种情况下使用双引号。
sed "s/draw($prev_number;n_)/draw($number;n_)/g" file.txt > tmp
你也可以使它与eval
,但不这样做!
sed "s/draw($prev_number;n_)/draw($number;n_)/g"
这会工作吗?
你可以使用像下面这样的变量。 就像这里,我想替换hostname
即文件中的系统变量。 我正在寻找字符串look.me
并用look.me=<system_name>
替换整行
sed -i "s/.*look.me.*/look.me=`hostname`/"
您也可以将系统值存储在其他变量中,并可以使用该变量进行替换。
host_var=
`主机名'
sed -i "s/.*look.me.*/look.me=$host_var/"
输入文件:
look.me=demonic
输出文件(假设我的系统名称是prod-cfm-frontend-1-usa-central-1
):
look.me=prod-cfm-frontend-1-usa-central-1