2011-07-08 11 views
0

変数に値を置きたいと思います。 sedで使用されている一重引用符のため、以下は機能しません。テキストを変数に置き換えます。

#!/bin/sh 
set myvarM='pqr' 
sed 's/:P03:M15/:P02:M1$myvarM/' mychange.txt > new_mychange.txt 

sedコマンドを変更することはできますか?何か別のものを使用する必要がありますか?ちなみに

+2

代わりに '' 'を使用すると、変数を展開できるようになります –

+0

ありがとうございました。 – shantanuo

答えて

2
#!/bin/sh 
myvarM='pqr' 
sed "s/:P03:M15/:P02:M1$myvarM/" mychange.txt > new_mychange.txt 

、その場で交換をする(つまり、新しいファイルを作成しますが、元のファイルを変更しない)、これを実行します。

sed -i '' "s/:P03:M15/:P02:M1$myvarM/" mychange.txt 

をこれは、「増分として空白を使用して言います接尾辞」 - すなわちボーン型のシェルでその入力

2
awk -v val="$myvarM" '{sub(/:P03:M15/, ":P02:M1" val); print}' filename 

注と同じファイル名を書き出す( 『/ binに/ SH』)setコマンドは、位置パラメータを設定します。最初の行はを値myvarM='pqr'に設定します。myvarM変数は引き続き設定解除されます。

関連する問題