catを使用して他のテキストの前にテキストを追加する

catを使用して他のテキストの前にテキストを追加する

.envというファイルがあります。

このファイルにはMYIP =変数があり、MYIP =の前にパブリックIPを入力する必要があります。

この公開内容をpublicip.txtという別のファイルに入れました。

publicipファイルの出力を使用し、前にMYIP =を追加したいと思います。

MYIP=を削除し、次のコマンドを試してみました。

echo "MYIP=" | cat - publicip >> .env

しかし、ファイルでMYIP = 177.XX.XX.XXという情報を確認しました。

同じ行にはありません。誰が私を助けることができますか?

答え1

これを行う方法はいくつかあります。catあまり一般的ではないオプションの1つですが、まだ完全に実行可能です。あなたはほとんどそれを持っていますが、echo改行文字があります。フラグを使用してこれを抑制できます-n

echo -n "MYIP=" | cat - publicip >> .env

答え2

.envファイルに保存したい他のコンテンツが含まれていると仮定すると、1つのアプローチはMYIP割り当てをPerlに置き換えることです。

perl -pe 's/MYIP=.*/MYIP='`cat publicip`'/' -i .env

テキストツール(perl、、、、)を使用するすべての同様のソリューションでは、誤った形式で破損しやすいcatため、ファイルを完全に制御できることを確認してください。安全な環境でこれらのモノライナーを使用するように注意してください。そうしないと、適切に固定することはほとんど不可能であり、状況が奇妙になる可能性があります。sedawkpublicip

これらの安全対策を講じる1つの方法は、.envファイルを所定の場所に変更せずにいくつかのテンプレートを使用し、それらをマージ/交換して出力ファイルを作成することです。悪意のある、または間違ったことが発生した場合(またはファイルが切り捨てられる空き領域がない場合など)は役に立ちませんが、少なくともテンプレートファイルの内容を失うことがないため、回復できます。.env

関連情報