在sed/bash中的变量替换
问题描述:
我试图在sed/bash中进行变量替换。在sed/bash中的变量替换
我看过这个例子here,但它不会根据需要替换数据。在$ C_CONF的第20行中观察到的值是$RAM
,当我希望它是100
。
$C_CONF
的第20行是AllowedRAMSpace=SomeValue
,我想在运行中更改该值。
这是我创建的技巧,但它是一个非常丑陋和低效的。
32 for RAM in 100 #80 60 40 20
33 do
34 sudo sed -i -re 's/(AllowedRAMSpace=)[^=]*$/\1"'"$RAM"'"/' $C_CONF
35 sudo sed -i '20s/"//' $C_CONF
36 sudo sed -i '20s/"//' $C_CONF
37 done
另一种方式是什么?
答
尝试用awk代替
awk 'BEGIN{RAM=100}NR==20{print gensub(/(AllowedRAMSpace=)([^=].*$)/,"\\1"RAM,"g", $0)}' filename
不能重现在这里你的问题。 ''sed -re's /(AllowedRAMSpace =)[^ =] * $/\ 1'“$ RAM”'/''像魔咒一样工作,并呈现其他'sed'命令无用。 –
看起来就是这样。我有一个额外的''',如果你粘贴这个答案,我会接受它。 – tandem