mn.ftg.com
ambari-agent.ini
以下のように、ファイル内のserver_をlocalhostに置き換える必要があります。
echo $machine
server_mn
echo $domain
ftg.com
more ambari-agent.ini
[server]
hostname=localhost
次のようにドットの前にバックスラッシュを追加する必要がありますか?
sed "s/hostname=localhost/hostname=$machine\.$domain/g" ambari-agent.ini
または安全に実行してください(バックスラッシュなし)。
sed "s/hostname=localhost/hostname=$machine.$domain/g" ambari-agent.ini
答え1
点は正規表現の一部であり、リテラル点と一致する必要がある場合にのみエスケープする必要があります。リテラルポイントを正規表現と一致させるには、\.
またはを使用できます[.]
。
s
ただし、式の代替部分は次sed
のとおりです。いいえ正規表現。
バックスラッシュを使用してエスケープする必要がある唯一の文字は\
、、&
改行、およびs
コマンド区切り文字(/
使用されている場合s/pattern/replacement/
)です。
これはあなたの命令を意味します
sed "s/hostname=localhost/hostname=$machine.$domain/g" ambari-agent.ini
これは、関連する変数の値が上記の規則に従う限り機能します。個人的には、式を行の先頭に固定し、コマンドg
からフラグを削除します。s