2016-08-09 2 views
1

私はシェルスクリプトを書く際に新しいです。私は次のシェルスクリプトを持っています。ループを使用して文字列を値で動的に置き換えます。シェルスクリプトのループを使用してファイル内の文字列を値に置き換えるにはどうすればよいですか?

for i in $(seq 1 5) 
    do 
     sed 's/counter/$i/g' AllMarkers.R > newfile.R 

    done 

が、このスクリプトは、誰もが、私は連続番号がループを使用してcounterを置き換えることができますどのように私に言うことができるかどうかは高く評価されるだろう.... $iの代わりに、1または2counterを交換して。

答えて

0

可変引用符は、一重引用符で囲まれた文字列内では実行されません。 ("Variable interpolation"は、可変参照を "$ i"などの文字列の代わりに使用する正式名称です)

これを行う方法はほとんどありません。最も一般的なこのです:

for i in $(seq 1 5) 
do 
    sed 's/counter/'$i'/g' AllMarkers.R > newfile.R 
done 

$iを入れ、$i前に、単一引用符で囲まれた文字列を停止し、単一引用符で囲まれた文字列を再開します。そのバリエーションは次のようになります:

# in case if $i might potentially contain spaces: 
sed 's/counter/'"$i"'/g' 

# in case if the whole expression to sed has no special characters: 
sed "s/counter/$i/g" 
関連する問題