2014-10-27 172 views
1

我在文件中的一行這種替換文本使用sed

integer, parameter :: L = 2 !Size of the system 

其中數字2可以是任意整數數量。我想使用sed找到這一行,並用另一個替換該號碼的值。

我想:

$ L=5 
$ sed -i '/L = /c\integer, parameter :: L = $L !Size of the system' moduleselfcons.f90 

但在我修改過的文件我在最後:

integer, parameter :: L = $ !Size of the system 

,而不是:

integer, parameter :: L = 5 !Size of the system 

問題是什麼?

+0

[在bash shell腳本的命令中擴展單引號內變量的可能重複](http://stackoverflow.com/questions/13799789/expansion-of-variable-inside-single-quotes-in-a- command-in-bash-shell-script) – 2014-10-27 15:09:58

回答

1

您應該使用雙引號(")而不是單引號(')。

但我認爲你可以縮短表達:

L=5 
sed "s/L = [0-9]*/L = $L/" file 

如果這是你想要的輸出加上-i標誌就地編輯。

+0

@ user3368447''''必須用'\!'和雙引號試試。 – chaos 2014-10-27 15:36:14