.txtファイルで文字列を見つけて置き換える方法は?

.txtファイルで文字列を見つけて置き換える方法は?

一部の資格情報が保存されているファイルがいくつかあり、シェルスクリプトを介してファイルを読み込み、現在の資格情報が検索された文字列と一致することを確認し、その場所でのみ置き換えるようにします。

以下のコードを試しましたが、常に追加され、文字列を置き換えることはありません。

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拡張子でバックアップします。他の方法が必要な場合は、詳細を記載してください。既存のファイルを台無しにしたくなく、そのファイルのテキストを変更したいので、あなたの質問は明確ではありませんか?

関連情報