2017-03-16 11 views
0

これはまっすぐ進むはずですが、残念です。sedの最初の単語に一致する完全な行を置き換えます

私は2つのファイルに同じパラメータが含まれていますが、値は異なります。一度に1つのファイル行を読み込み、パラメータ名を取得し、2番目のファイルで一致させるためにこれを使用し、ファイル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変数で置き換える代わりに文字列 '$ line'で置き換えることを実際に探しています。

要するに、sedは必要な値を表示しません。二重引用符に切り替えます。

関連する問題