文字列を変数に置き換えるには?

文字列を変数に置き換えるには?

同じファイルを含む一連のディレクトリを取得し、ファイルのテキスト文字列をディレクトリ名と一致する変数に置き換えるループを含むスクリプトを作成しようとしています。
変数は$ i = 3,4,5で、ファイル名はFILEです
。これまでに作成した内容は次のとおりです。

for i in ./*z  
do
  cd $i  
  if  
    grep -q 'DZ' FILE
  then
    sed -i 's/DZ/$iZ/g' FILE
  fi  
  cd ..  
done

変数を変更せずにDZの代わりに$ iZを取得します。
この問題をどのように解決できますか?

ベストアンサー1

GNUシステムでファイル内DZのすべての項目をに置き換えたいとします./fooz/FILEfooZ

grep -lZe DZ -- *z/FILE |
  xargs -r0 perl -pi -e '
    my $repl = "${1}Z" if $ARGV =~ m{(.*?)z/};
    s/DZ/$repl/g' --

おすすめ記事