sedを使用するときは、ドットの前にバックスラッシュを追加する必要があります。

sedを使用するときは、ドットの前にバックスラッシュを追加する必要があります。

mn.ftg.comambari-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

おすすめ記事