sedを使用してファイルをバックアップおよび変更する方法は?

sedを使用してファイルをバックアップおよび変更する方法は?

一度に複数のサーバーの一部の構成を上書きする必要があり、バックアップを作成するときに元の構成ファイルを変更したいのですが、ただ疑問に思うので、これをすべてsedで実行できますか?

誰かがこのモードに言及しましたが、うまくいきません。

new_port="..."
sed -i .bak "s/port=2334/${new_port}/g"

答え1

sed -i .bak "s/port=2334/${new_port}/g"

あなたが探している修正は、末尾のスペースを削除することです-i

sed -i.bak "s/port=2334/${new_port}/g"

new_portポート番号のみがある場合は、以下も繰り返す必要がありますport=

sed -i.bak "s/port=2334/port=${new_port}/g"

これは、実際に式の後に処理するファイル名を指定した場合にのみ機能しますsed

答え2

awkを試してください

awk '{print $0}' file >file.backup && awk '{gsub(/port=2334/,"port=${new_port}",$0);print }' file >tmpfile && mv tmpfile file

関連情報