Executar loop para cada linha de arquivo

1. Executar loop para cada linha de arquivo

Juliano Vargas
DebiaLX

(usa Debian)

Enviado em 11/06/2018 - 21:13h

tenho o arquivo com o conteudo,
hosts.txt
110
210
315

Preciso executar um loop para cada linha do hosts.txt
Cada linha vai gerar um arquivos com informaçoes dos respectivos hosts:
host-110.txt
info-1
info-2
info-3
info-4

host-210.txt
texto-1
texto-2

host-315.txt
dados-1
dados-2
dados-3

Preciso executar outro loop com os 03 arquivos gerados,
que mais uma vez vai gerar outro arquivo para cada host-*txt
host-110-resultado.txt
host-210-resultado.txt
host-315-resultado.txt

Neste contexto estou com duvidas de como montar uma estrutura para criar o script
Pensei em algo neste sentido, não sei se estou no caminho correto.
Se alguém puder ajudar, ficarei grato.

#! /bin/bash

while read line;
do
sequência de comandos > host-"$line".txt
done < hosts.txt

for i in `cat host-*.txt`
do
sequencia de comandos >> host-$line-resultado.txt
done



  


2. Re: Executar loop para cada linha de arquivo

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 11/06/2018 - 23:01h

DebiaLX escreveu:

tenho o arquivo com o conteudo,
hosts.txt
110
210
315

Preciso executar um loop para cada linha do hosts.txt
Cada linha vai gerar um arquivos com informaçoes dos respectivos hosts:
host-110.txt
info-1
info-2
info-3
info-4

host-210.txt
texto-1
texto-2

host-315.txt
dados-1
dados-2
dados-3

Preciso executar outro loop com os 03 arquivos gerados,
que mais uma vez vai gerar outro arquivo para cada host-*txt
host-110-resultado.txt
host-210-resultado.txt
host-315-resultado.txt

Neste contexto estou com duvidas de como montar uma estrutura para criar o script
Pensei em algo neste sentido, não sei se estou no caminho correto.
Se alguém puder ajudar, ficarei grato.

#! /bin/bash

while read line;
do
sequência de comandos > host-"$line".txt
done < hosts.txt

for i in `cat host-*.txt`
do
sequencia de comandos >> host-$line-resultado.txt
done


Boa noite DebiaLX.
Veja se estou no caminho....
O comando abaixo, gera os três primeiros arquivos.
while read line;do 
for n in {1..9};do
(($n<=4)) && echo "info-$n" >> host-${line}.txt;
(($n>4&&$n<=6))&& echo texto_$((n%4)) >> host-${line}.txt;
(($n>6))&& echo "dados-$((n%6))" >> host-${line}.txt;
done;
done<host.txt


marcelo oliver



3. Re: Executar loop para cada linha de arquivo

Juliano Vargas
DebiaLX

(usa Debian)

Enviado em 11/06/2018 - 23:50h

Boa noite Marcelo,
A geração dos 3 arquivos esta ok, host-110.txt, host-210.txt e host-315.txt
O conteúdo que foi gerado para os 3 host foram iguais..isso que gostaria de separar.
info-1
info-2
info-3
info-4
texto_1
texto_2
dados-1
dados-2
dados-3
Gostaria que cada arquivo recebesse suas respectivas informações separadas
host-110.txt
recebe apenas as informações refente ao host 110
info-1 (aqui os resultados podem ser diversos, de acordo com o comando)
info-2
info-3
info-4

host-210.txt
recebe apenas as informações refente ao host 210
texto-1
texto-2

host-315.txt
recebe apenas as informações refente ao host 315
dados-1
dados-2
dados-3


4. Re: Executar loop para cada linha de arquivo

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 12/06/2018 - 12:33h

DebiaLX escreveu:

Boa noite Marcelo,
A geração dos 3 arquivos esta ok, host-110.txt, host-210.txt e host-315.txt
O conteúdo que foi gerado para os 3 host foram iguais..isso que gostaria de separar.
info-1
info-2
info-3
info-4
texto_1
texto_2
dados-1
dados-2
dados-3
Gostaria que cada arquivo recebesse suas respectivas informações separadas
host-110.txt
recebe apenas as informações refente ao host 110
info-1 (aqui os resultados podem ser diversos, de acordo com o comando)
info-2
info-3
info-4

host-210.txt
recebe apenas as informações refente ao host 210
texto-1
texto-2

host-315.txt
recebe apenas as informações refente ao host 315
dados-1
dados-2
dados-3


Quais são as informações especificas de cada host?
marcelo oliver



5. Re: Executar loop para cada linha de arquivo

Juliano Vargas
DebiaLX

(usa Debian)

Enviado em 12/06/2018 - 23:47h

As informações vão ser criadas pelos usuários de cada host.
Ele vai ter um campo com até 30 caracteres, para incluir qualquer nome, vai ficar a critério dos usuários a definição das informações.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts