
複数行のファイルがあります。
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
タグ付けしましたが、vi
CLIオプションを探しているようです。その中に、上に挿入をvi
使用してshift + O
自動的に新しい行を追加してから、行を直接貼り付けることができます。エディタを使用したくない場合は、これを行うことができますsed
(GNU実装を想定)。
sudo sed -i '1iabcd555.india.com' /etc/hosts