一度に複数のサーバーの一部の構成を上書きする必要があり、バックアップを作成するときに元の構成ファイルを変更したいのですが、ただ疑問に思うので、これをすべて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