Formatação de arquivo - Quebra de Linha quando encontrar X palavra [RESOLVIDO]

1. Formatação de arquivo - Quebra de Linha quando encontrar X palavra [RESOLVIDO]

Bruno Brito
Bruno_B

(usa Debian)

Enviado em 08/11/2019 - 15:51h

Boa tarde Pessoal,

Sou de Redes e há duas semanas comecei a estudar shell script para automatizar algumas tarefas no meu trabalho. Eu tentei encontrar alguma solução parecida para meu problema no Forúm mas não obtive sucesso, me desculpem a ignorancia se for simples...

Meu script basicamente está conectando em Switchs via SSH (Interação do Expect) e joga todas as informações em um arquivo geral "log.txt". A partir dele estou filtrando as informações que preciso com "greps" e "seds", porém as informações dos equipamentos estão todas sem quebra de linha e gostaria de separar cada device com um simples "\n". Minha lógica seria que onde ele encontrar "SerialNumber: +12Numeros a frente" inserisse a quebra de linha.

O Arquivo tem este padrão:

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX
ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX
ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

O que eu quero fazer:

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

Agradeço desde já.



  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 08/11/2019 - 16:02h

Bruno_B escreveu:

Boa tarde Pessoal,

Sou de Redes e há duas semanas comecei a estudar shell script para automatizar algumas tarefas no meu trabalho. Eu tentei encontrar alguma solução parecida para meu problema no Forúm mas não obtive sucesso, me desculpem a ignorancia se for simples...

Meu script basicamente está conectando em Switchs via SSH (Interação do Expect) e joga todas as informações em um arquivo geral "log.txt". A partir dele estou filtrando as informações que preciso com "greps" e "seds", porém as informações dos equipamentos estão todas sem quebra de linha e gostaria de separar cada device com um simples "\n". Minha lógica seria que onde ele encontrar "SerialNumber: +12Numeros a frente" inserisse a quebra de linha.

O Arquivo tem este padrão:

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX
ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX
ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

O que eu quero fazer:

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

Agradeço desde já.

Boa tarde Bruno.
Veja se é isso:
sed -i 's/^SerialNumber.*$/&\n/' texto
Ou
sed -ri "s/^SerialNumber:[0-9]{12}$/&\n/" texto

_________________________________________________________________
Importante: echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver

3. Re: Formatação de arquivo - Quebra de Linha quando encontrar X palavra [RESOLVIDO]

Bruno Brito
Bruno_B

(usa Debian)

Enviado em 08/11/2019 - 22:32h

msoliver escreveu:

Bruno_B escreveu:

Boa tarde Pessoal,

Sou de Redes e há duas semanas comecei a estudar shell script para automatizar algumas tarefas no meu trabalho. Eu tentei encontrar alguma solução parecida para meu problema no Forúm mas não obtive sucesso, me desculpem a ignorancia se for simples...

Meu script basicamente está conectando em Switchs via SSH (Interação do Expect) e joga todas as informações em um arquivo geral "log.txt". A partir dele estou filtrando as informações que preciso com "greps" e "seds", porém as informações dos equipamentos estão todas sem quebra de linha e gostaria de separar cada device com um simples "\n". Minha lógica seria que onde ele encontrar "SerialNumber: +12Numeros a frente" inserisse a quebra de linha.

O Arquivo tem este padrão:

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX
ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX
ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

O que eu quero fazer:

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

Agradeço desde já.

Boa tarde Bruno.
Veja se é isso:
sed -i 's/^SerialNumber.*$/&\n/' texto
Ou
sed -ri "s/^SerialNumber:[0-9]{12}$/&\n/" texto

_________________________________________________________________
Importante: echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver


msoliver escreveu:

Bruno_B escreveu:

Boa tarde Pessoal,

Sou de Redes e há duas semanas comecei a estudar shell script para automatizar algumas tarefas no meu trabalho. Eu tentei encontrar alguma solução parecida para meu problema no Forúm mas não obtive sucesso, me desculpem a ignorancia se for simples...

Meu script basicamente está conectando em Switchs via SSH (Interação do Expect) e joga todas as informações em um arquivo geral "log.txt". A partir dele estou filtrando as informações que preciso com "greps" e "seds", porém as informações dos equipamentos estão todas sem quebra de linha e gostaria de separar cada device com um simples "\n". Minha lógica seria que onde ele encontrar "SerialNumber: +12Numeros a frente" inserisse a quebra de linha.

O Arquivo tem este padrão:

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX
ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX
ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

O que eu quero fazer:

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

Agradeço desde já.

Boa tarde Bruno.
Veja se é isso:
sed -i 's/^SerialNumber.*$/&\n/' texto
Ou
sed -ri "s/^SerialNumber:[0-9]{12}$/&\n/" texto

_________________________________________________________________
Importante: echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver


msoliver escreveu:

Bruno_B escreveu:

Boa tarde Pessoal,

Sou de Redes e há duas semanas comecei a estudar shell script para automatizar algumas tarefas no meu trabalho. Eu tentei encontrar alguma solução parecida para meu problema no Forúm mas não obtive sucesso, me desculpem a ignorancia se for simples...

Meu script basicamente está conectando em Switchs via SSH (Interação do Expect) e joga todas as informações em um arquivo geral "log.txt". A partir dele estou filtrando as informações que preciso com "greps" e "seds", porém as informações dos equipamentos estão todas sem quebra de linha e gostaria de separar cada device com um simples "\n". Minha lógica seria que onde ele encontrar "SerialNumber: +12Numeros a frente" inserisse a quebra de linha.

O Arquivo tem este padrão:

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX
ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX
ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

O que eu quero fazer:

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

ChassisSerialNumber:XXXXXXXXXX
setsystemlocation:ABCD
setsystemname:HOSTNAME
Type:VENDORY
SerialNumber:XXXXXXXXXX

Agradeço desde já.

Boa tarde Bruno.
Veja se é isso:
sed -i 's/^SerialNumber.*$/&\n/' texto
Ou
sed -ri "s/^SerialNumber:[0-9]{12}$/&\n/" texto

_________________________________________________________________
Importante: echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver


Obrigado Marcelo, a expressão me ajudou vou procurar estuda las um pouco mais!


4. Re: Formatação de arquivo - Quebra de Linha quando encontrar X palavra [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 08/11/2019 - 22:50h

Boa noite Bruno.
Obrigado pela avaliação.
A sintaxe é simples, troca isto por isto...
sed 's/isto/isto\n/' arquivo
sed -i 's/^SerialNumber.*$/&\n/
No caso acima, casei o "isto" com uma regex,
/&\n/, o & significa o que foi casado, mais \n.

Att.: Marcelo Oliver






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts