複数のファイルで複雑なテキストを置き換える

複数のファイルで複雑なテキストを置き換える

Linuxさまざまなサブフォルダに複数の名前のプライベートファイルがあります。全体的に

DSY_OS_Release=`lsb_release --short --id |sed 's/ //g'`

と交換する必要があります

DSY_OS_Release="RedHatEnterpriseWorkstation"

コマンドラインを使用してこれをどのように達成できますか?

重複した質問のように聞こえますが、複雑な文字列に適した回答が見つかりません。

答え1

行全体を一致させる必要がない場合は、次を使用します。

sed 's/^DSY_OS_Release=.*/DSY_OS_Release="RedHatEnterpriseWorkstation"/'

実装に応じてをsed使用することもsed -i '...' file、新しいファイルにリダイレクトした後に元のファイルを置き換える必要があります。

ファイルセットで実行する方法は次のとおりです。すべてのファイルが特定のパターンと一致する場合(例:*.configGNUと仮定sed):

find /some/path -type f -name '*.config' \
    -exec sed -i '...as above...' {} \;

関連情報