ファイルの最初の行にホスト名を追加する方法

ファイルの最初の行にホスト名を追加する方法

複数行のファイルがあります。

one
two
three
four
five

ファイルの最初の行に作業しているサーバーのホスト名を追加する必要があります。たとえば、abcd555.india.comがサーバーの場合、出力ファイルは次のようになります。

abcd555.india.com
one
two
three
four
five

私の質問が明確になりますように!この困難な時期に私を助けてくださる皆さんに感謝します。

答え1

viコマンドの使用

:0r !hostname

またはより長い形式で、

:0read !hostname

Escもちろん最初に押す必要があります。

このreadコマンドは通常ファイル名を取得し、そのファイルの内容を現在の行の下に挿入しますが、!その前にシェルコマンドを指定すると、そのコマンドの出力を取得して挿入します。それ現在の行の下。

しかし、私たちはそれをどこにでも接続したくありません。私たちはそれを挿入したい最初ワイヤー。これが私たちが言う理由です0r。 0は、コマンド出力(またはファイル)が配置される行番号を指定します。

答え2

これを使用できますかsed

これはGNUを想定していますsed

sed -i '1 i\'"$HOSTNAME" file

これをtest1というファイルと一緒に使用すると、次のようになります。

$ cat test1
one
two
three
four
five

それから:

$ sed -i '1 i\'"$HOSTNAME" test1

次に続く:

$ cat test1
chris-dell
one
two
three
four
five

答え3

プログラムでこれを行う最も簡単な方法は、一時ファイルに書き込んでから既存のファイルを上書きすることです。

{ hostname; cat somefile; } > somefile.tmp &&
  mv somefile.tmp somefile

答え4

タグ付けしましたが、viCLIオプションを探しているようです。その中に、上に挿入をvi使用してshift + O自動的に新しい行を追加してから、行を直接貼り付けることができます。エディタを使用したくない場合は、これを行うことができますsed(GNU実装を想定)。

sudo sed -i '1iabcd555.india.com' /etc/hosts

関連情報