如何将主机名添加为文件的第一行

如何将主机名添加为文件的第一行

我有一个有几行的文件。

one
two
three
four
five

我需要添加我正在处理的服务器的主机名作为文件的第一行。例如,如果 abcd555.india.com 是服务器,则输出文件应如下所示:

abcd555.india.com
one
two
three
four
five

希望我的问题很清楚!我将感谢任何在这个需要帮助的时刻帮助我的人。

答案1

使用vi命令

:0r !hostname

或者,以更长的形式,

:0read !hostname

Esc当然,你必须先按。

read命令通常采用文件名并将该文件的内容插入到当前行下方,但如果您在!其前面指定 shell 命令,它将采用该命令的输出并插入在当前行下方。

然而,我们不只是想将其插入到任何地方。我们想把它插入到第一的线。这就是为什么我们说0r。零指定行号,命令输出(或文件)将放置在该行号之后。

答案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

相关内容