2017-03-16 84 views
0

我知道这应该是直接的,但我卡住了,对不起。sed匹配第一个词替换全行

我有两个文件都包含相同的参数,但具有不同的值。我试图一次读取一个文件行,获取参数名称,使用它在第二个文件中匹配,并用文件1中的行替换整行。

例如, rw_2.core.fvbCore.Param.isEnable 1(FVB_Params) 成为 rw_2.core.fvbCore.Param.isEnable真(FVB_Boolean)

行不会总是相同的长度,但我一直想更换整条生产线。

我有的代码如下,但它不会替换,我不能解决为什么不。

while read line; do   
    ParamName=`awk '{print $1}'` 
    sed -i 's/$ParamName.*/$line/g' FVB_Params.txt 
done < FVB_Boolean.txt 
+0

'。^''?这应该如何理解?你说在行开始之前有一个角色? – hek2mgl

+0

是的,对不起,这是一个错字,不能解决如何编辑这个。忽略$ ParamName前的字符 – RobynP

+0

编辑更正 – RobynP

回答

0

如果您希望将这些变量替换为其值,则需要使用双引号内的sed命令。你有单引号,所以sed实际上是在寻找带有美元符号的字符串来替换字符串'$ line',而不是你的shell在$ line变量中的值。

总之,sed没有看到你想要的值。切换到双引号。