特定の構文の後の名前を変更する

特定の構文の後の名前を変更する

Bashスクリプトがあります。 Bashスクリプトで名前を変更したいですmaster02$machine_master

    value=master02_up
    #master02
    http://master02.$domain:8080

変更方法はmaster02後でのみ $machine_master可能です。master02http://master02

予想出力:

    value=master02_up
    #master02
    http://$machine_master.$domain:8080

ベストアンサー1

使用標準sed:

sed 's#http://master02.\$domain:8080#http://$machine_master.$domain:8080#' file >newfile

これにより、正しい文字列が変更され、http://master02.$domain:8080結果http://$machine_master.$domain:8080が新しいファイルに書き込まれます。

inは、「行末」パターンとして解釈されないようにエスケープする必要があります$。代替テキストはパターンではないため、エスケープする必要はありません$domain$

パターンと置換テキストの両方にデフォルトの区切り文字が含まれているため、置換コマンド()#で区切り文字を使用しています。seds/

このコマンドは、次のように短縮することもできます。

sed 's#http://master02#http://$machine_master#' file >newfile

安全かどうか(ファイルの内容と置き換えたいテキストインスタンスによって異なります)。

テスト:

$ cat file
value=master02_up
#master02
http://master02.$domain:8080

$ sed 's#http://master02.\$domain:8080#http://$machine_master.$domain:8080#' file >newfile

$ cat newfile
value=master02_up
#master02
http://$machine_master.$domain:8080

おすすめ記事