Como adicionar nome do host como primeira linha de um arquivo

1

Eu tenho um arquivo com algumas linhas.

one
two
three
four
five

Eu preciso adicionar o nome do host do servidor em que estou trabalhando como a primeira linha do arquivo. Por exemplo, se abcd555.india.com é o servidor, o arquivo de saída deve ser como:

abcd555.india.com
one
two
three
four
five

Espero que minha pergunta esteja clara! Eu ficaria grato a quem me ajuda nesta hora de necessidade.

    
por Karthik 27.06.2016 / 16:07

4 respostas

3

Use o comando vi

:0r !hostname

Ou, na sua forma mais longa,

:0read !hostname

Você teria que pressionar Esc primeiro, é claro.

O comando read geralmente pega um nome de arquivo e insere o conteúdo desse arquivo abaixo da linha atual, mas se você especificar um comando shell com ! na frente dele, ele pegará a saída desse comando e inserirá que abaixo da linha atual.

No entanto, não queremos apenas inserir isso em qualquer lugar. Queremos inseri-lo na linha primeiro . É por isso que dizemos 0r . O zero especifica o número da linha após o qual a saída do comando (ou arquivo) será colocada.

    
por 27.06.2016 / 16:33
2

Isso funcionaria usando sed ?

Aqui assumindo o GNU sed :

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

Usar isso com um arquivo chamado test1 produz:

$ cat test1
one
two
three
four
five

Então:

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

leva a:

$ cat test1
chris-dell
one
two
three
four
five
    
por 27.06.2016 / 16:13
1

A maneira mais fácil de fazer isso programaticamente é gravar em um arquivo temporário e, em seguida, sobrescrever o existente:

{ hostname; cat somefile; } > somefile.tmp &&
  mv somefile.tmp somefile
    
por 27.06.2016 / 16:12
1

Você marcou vi , mas parece que você está procurando uma opção de CLI. Enquanto em vi você pode usar shift + O para inserir acima e adicionar automaticamente uma nova linha e apenas colar sua linha. Se você não quiser usar um editor, você pode usar sed (aqui assumindo a implementação GNU ).

sudo sed -i '1iabcd555.india.com' /etc/hosts
    
por 27.06.2016 / 16:17