在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 

另一种方式是什么?

+4

不能重现在这里你的问题。 ''sed -re's /(AllowedRAMSpace =)[^ =] * $/\ 1'“$ RAM”'/''像魔咒一样工作,并呈现其他'sed'命令无用。 –

+0

看起来就是这样。我有一个额外的''',如果你粘贴这个答案,我会接受它。 – tandem

尝试用awk代替

awk 'BEGIN{RAM=100}NR==20{print gensub(/(AllowedRAMSpace=)([^=].*$)/,"\\1"RAM,"g", $0)}' filename