一部の資格情報が保存されているファイルがいくつかあり、シェルスクリプトを介してファイルを読み込み、現在の資格情報が検索された文字列と一致することを確認し、その場所でのみ置き換えるようにします。
以下のコードを試しましたが、常に追加され、文字列を置き換えることはありません。
cat $FILESOURCE | sed -e "s/$TEXTTOSEARCH/$TEXTTOREPLACE/g" >> $FILESOURCE
どこ
FILESOURCE
=読みたい.txtファイルTEXTTOSEARCH
=検索する文字列TEXTTOREPLACE
=置き換えるテキスト
注:既存のファイルを混乱させたくないので、読み取るためにファイルを開き、検索文字列があることを確認してから置き換え、それ以外の場合はファイルに何もしません。
答え1
もちろんを使っているので追加されます>>
。これは追加を意味します。
あなたの中には何が含まれていますか$TEXTTOSEARCH
?文字だけありますか?それとも特殊文字がありますか?正規表現に特別な意味を持つ特殊文字がある場合は、エスケープしなければ正しく機能します。すべての文字を表します.
。\.
.seeに置き換える必要があります$TEXTTOSEARCH
。ここ詳細については。
ファイルを処理する方法はいくつかあります。私はあなたが使用することをお勧めします
sed -i.bak -e "s/$TEXTTOSEARCH/$TEXTTOREPLACE/g" $FILESOURCE
このように、sedはファイルのテキストを置き換え、.bak
拡張子でバックアップします。他の方法が必要な場合は、詳細を記載してください。既存のファイルを台無しにしたくなく、そのファイルのテキストを変更したいので、あなたの質問は明確ではありませんか?