ファイルの文字列を置き換えてファイルを上書きします。

ファイルの文字列を置き換えてファイルを上書きします。

私はディレクトリを使用してスクリプトを作成しました~/deleted(長いスクリプトです)。~/deleted完全なスクリプトを使用した後。ユーザーがパスを~/.rm.cfg

私のファイルは次のように始まります。

#!/bin/bash

defaultpath=~/deleted

if [ -s ~/.rm.cfg ]
then
    defaultpath=$(head -1 ~/.rm.cfg)
fi

スクリプト内のすべての項目を~/deleted$defaultpathソースファイルを保存して置き換えるためにコマンドラインでこれを行う方法はありますか?

Perlやsedを操作できません。

ベストアンサー1

sed -i 's|~/deleted|"$defaultpath"|g' file.sh

説明する:

  • -isedファイルをその場で変更するように指示します。

  • s|~/deleted|"$defaultpath"|gsed代替項目が見つかった場所に~/deletedあることを知らせます。"$defaultpath"

ボーナス:3行目で〜/削除を維持

これを要求しませんでしたが、サンプルスクリプトでは、~/deleted定義の3行目を変更せずにそのままにする方が良いでしょうdefaultpath。変える~/deleted とは別に3行目では、次を使用します。

sed -i -e '3n' -e 's|~/deleted|"$defaultpath"|g' file.sh

これにより、3行目をスキップしたことを示すコマンドが追加されますsed3nsed

おすすめ記事