Script - Forma mais objetiva de adicionar strings dentro de um arquivo? [RESOLVIDO]

1. Script - Forma mais objetiva de adicionar strings dentro de um arquivo? [RESOLVIDO]

Artur Vicente
arturvsantos

(usa Debian)

Enviado em 19/10/2012 - 12:40h

Pessoal,
Estou desenvolvendo um script de automação da instalação e configuração de uma solução. Até aí tudo bem.
O problema para ser simples, advirto!
Acontece que eu desejo adicionar algumas linhas num determinado arquivo em caso do arquivo estiver satisfizer uma condição que eu aplico.
Utilizarei um exemplo semelhante para figurar minha situação:

- Esclarecendo a situação:
Eu tenho o arquivo interfaces (/etc/network/interfaces) e, se o arquivo tiver 10 linhas, eu quero adicionar outras linhas.
Vamos lá!

# cat -n /etc/network/interfaces
1 # This file describes the network interfaces available on your system
2 # and how to activate them. For more information, see interfaces(5).
3
4 # The loopback network interface
5 auto lo
6 iface lo inet loopback
7
8 # The primary network interface
9 allow-hotplug eth0
10 iface eth0 inet dhcp

- Criando um script rápido e simples para figurar melhor a problemática:

#!/bin/bash
INTERFACES=$(cat -n /etc/network/interfaces | wc -l)
if [[ $INTERFACES >=10 ]]; then
sed -i '9,$ d' /etc/network/interfaces #Apagará da 10 linha em diante do arquivo
echo "auto eth0" >> /etc/network/interfaces
echo "allow-hotplug eth0" >> /etc/network/interfaces
echo "iface eth0 inet dhcp" >> /etc/network/interfaces
echo "# auto eth1" >> /etc/network/interfaces
echo "# allow-hotplug eth1" >> /etc/network/interfaces
echo "# iface eth1 inet dhcp" >> /etc/network/interfaces
cat -n /etc/network/interfaces
fi

Problema: Observam que, satisfeita a condição de ter a partir de 10 linhas o arquivo, eu quero conservar as 9 primeiras linhas e adicionar outras linhas por meio do redirecionamento do stdin do comando echo até o arquivo interfaces?! Então, se eu tiver 20 linhas a serem adicionadas neste arquivo, vocês conhecem um método mais prático/ objetivo do que encher o script de "echo "xxxx" >> arquivo" ?

Agradeço antecipadamente qualquer contribuição.

Saúde a todos!

Atenciosamente,

Artur



  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 19/10/2012 - 15:45h

Não entendi bem sua dúvida.

Você quer algo como
cat <<EOM >>/tmp/arquivo
linha 1
linha 2
...
...
EOM
ou
{
comando1
comando2
comando...
} >>/tmp/arquivo
?

3. Re: Script - Forma mais objetiva de adicionar strings dentro de um arquivo? [RESOLVIDO]

Artur Vicente
arturvsantos

(usa Debian)

Enviado em 19/10/2012 - 16:51h

A ação elementar do meu questionamento é adicionar linhas em um arquivo por meio de um script.
Acontece que eu estou utilizando o "echo "blablabla" >> arquivo" para fazê-lo e esse procedimento saturante de, a cada linha, adicionar "echo "blablabla" >> arquivo" tá enchendo! :P
Não teria um modo de adicionar toda a informação de uma vez para dentro do tal arquivo que será editado pelo script?

Esses seus dois exemplos parecem interessantes, @paulo1205, mas eu n sei sua aplicação. Poderia explicar melhor?

Grato!


4. Re: Script - Forma mais objetiva de adicionar strings dentro de um arquivo? [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 19/10/2012 - 17:04h

O primeiro caso é se você quiser adicionar um texto fixo ao arquivo. Voce pode colocar esse texto fixo diretamente ao corpo do script, escolhendo uma string para marcar o final do blco de texto. No caso de "cat <<EOM >>arquivo", o que você faz é acrescentar ao final de arquivo o texto compreendido entre a linha seguinte ao comando até a linha anterior a ma linha em que ocorre o texto "EOM".

O segundo caso é aplica um redirecionamento sobre um bloco de comandos, compreendido entre as aspas. Você usará isso quando o exto a ser incluido não for fixo, mas puder variar de acordo com a execução dos comandos.


5. Re: Script - Forma mais objetiva de adicionar strings dentro de um arquivo? [RESOLVIDO]

Artur Vicente
arturvsantos

(usa Debian)

Enviado em 19/10/2012 - 17:33h

paulo1205 escreveu:

O primeiro caso é se você quiser adicionar um texto fixo ao arquivo. Voce pode colocar esse texto fixo diretamente ao corpo do script, escolhendo uma string para marcar o final do blco de texto. No caso de "cat <<EOM >>arquivo", o que você faz é acrescentar ao final de arquivo o texto compreendido entre a linha seguinte ao comando até a linha anterior a ma linha em que ocorre o texto "EOM".

O segundo caso é aplica um redirecionamento sobre um bloco de comandos, compreendido entre as aspas. Você usará isso quando o exto a ser incluido não for fixo, mas puder variar de acordo com a execução dos comandos.


Grato, @paulo1205!
Você ajudou-me a solucionar este probleminha.

Espero poder ser útil também, quando precisares.

Forte abraço!

Obs.: Adicionalmente encontrei estes dois links que possam ser úteis a quem tiver dúvidas como esta que citei:

http://tldp.org/LDP/abs/html/here-docs.html
http://www.ccuec.unicamp.br/revista/infotec/linux/linux15-1.html






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts