shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Re: Limpar espaços em brando e linhas em branco


From: Julio C. Neves
Subject: Re: [shell-script] Re: Limpar espaços em brando e linhas em branco
Date: Sat, 28 Sep 2013 19:21:15 -0300


Melhorando:
Pinga=$(ping -c 3 192.168.10.3; ping -c 3 192.168.10.4; ping -c 3 192.168.10.5; ping -c 3 192.168.10.10)
cut -d' ' -s -f 4-7 <<< "$Pinga" | cut -d: -s -f 1 | sort -n -u > ipstmp
# <Sem tentar entender, mas achando que pode melhorar (acho que o diff deveria ser substituído pelo comm)>
vtmp=$(diff ipstmp ips)

#Na hora de fazer o diff ele retorna um sinal de > aqui eu removo e fico somente com o ip que
#não foi posivel pingar, assim sendo o radio que esta fora.
vtmp=$(cut -d'>' -f2 <<< "$vtmp")

#Remove espaços em branco ( @juliobash )
vtmp=$(sed '/^ *$/d;s/^ *//;s/ *$//' <<< "$vtmp")
# </Sem tentar entender, mas achando que pode melhorar (acho que o diff deveria ser substituído pelo comm)>
if [ -z $vtmp ]; then
     echo $vtmp | mail -s "Radio fora do ar" address@hidden
fi


99% das suas dúvidas estão respondidas em http://wiki.softwarelivre.org/TWikiBar/WebHome#Livro_de_Shell_em_Portugu_s


Abcs,
Julio
@juliobash
Em 28 de Setembro estarei dando um curso de Shell de 40 horas em Curitiba. Email me




Em 28 de setembro de 2013 18:19, Anderson Junior <address@hidden> escreveu:
 

Era isso mesmo que eu estava precisando, funcionou perfeito, muito obrigado...estou com um probleminha no meu script, dei uma pesquisada mas não encontrei algo que pudesse me esclarecer, vou postar aqui e se puder de uma olhado, caso queira que eu abra outro tópico o farei...

#!/bin/bash

#Pinga nos radios e salva dentro de log.txt
ping -c 3 192.168.10.3 > log.txt
ping -c 3 192.168.10.4 >> log.txt
ping -c 3 192.168.10.5 >> log.txt
ping -c 3 192.168.10.10 >> log.txt

#Salva no arquivo ipstmp apenas os ips sem o restante das informações do ping
#Ex: 192.168.10.3
# 192.168.10.4 assim por diante,
cat log.txt | cut -d' ' -s -f 4-7 | cut -d: -s -f 1 | sort -n -u > ipstmp

#Dentro do arquivo ips tem uma lista dos ips para comparar, aqui é comparado
vtmp=$(diff ipstmp ips)

#Na hora de fazer o diff ele retorna um sinal de > aqui eu removo e fico somente com o ip que
#não foi posivel pingar, assim sendo o radio que esta fora.
vtmp=$(cut -d'>' -f2 <<< "$vtmp")

#Remove espaços em branco ( @juliobash )
vtmp=$(sed '/^ *$/d;s/^ *//;s/ *$//' <<< "$vtmp")

#Uma variavel com valor vazio para comparar com $ vtmp
vvt=""

#Compara, caso for diferente de vazia, envia um email com o radio que esta fora
if [ $vtmp != $vvt ]; then
echo $vtmp | mail -s "Radio fora do ar" address@hidden
fi

o problema esta na hora de testar se o conteudo esta vazio ou se tem algum conteudo na variavel, criticas e sugestões são bem vindas, sou extremamente iniciante....

Este script serve para testar alguns ips e caso não conciga pingar em algum deles envia um email com o ip que esta fora do alcance...

Att.
Anderson Junior

--- Em address@hidden, "Julio C. Neves" <julio.neves@...> escreveu
>
> Repare essa sequencia de cmds:
>
> $ cat -vet <<< "$Var"
> 1 $
> $
> 2 $
> 3 $
> $
> 4$
> $
> 5$
> $ Var=$(sed '/^ *$/d;s/^ *//;s/ *$//' <<< "$Var")
> $ cat -vet <<< "$Var"
> 1$
> 2$
> 3$
> 4$
> 5$
>
> Usei a opção -vet do cat, para que ele exibisse o fim de linha como um
> cifrão ($). Como vc pode ver, criei linhas vazias, só com espaços e com
> espaços antes e/ou após o valor. No fim estava tudo limpo.
>
>
> Abcs,
> Julio
> *@juliobash
> *
>
>
>
> Em 28 de setembro de 2013 09:53, Anderson Junior <
> andersonscinfo@...> escreveu:
>
> > **
> >
> >
> > Obrigado Julio deu certinho, só mais uma pergunta, teria como utilizar
> > esse mesmo comando em uma variavel?
> >
> > --- Em address@hidden, "Julio C. Neves" <julio.neves@>
> > escreveu
> > >
> > > Para matar linhas vazias ou que contenham somente espaços em branco:
> > > $ sed -i.veio '/^ *$/d' arq
> > >
> > > Para tirar espaços do início:
> > > $ sed -i.veio 's/^ *//' arq
> > >
> > > Para tirar espaços do fim:
> > > $ sed -i.veio 's/ *$//' arq
> > >
> > > Para fazer tudo de uma só vez:
> > > $ sed -i.veio '/^ *$/d;s/^ *//;s/ *$//' arq
> > >
> > > Obs: Com essa sintaxe, o arquivo (que chamei de arq) será alterado nele
> > > mesmo, mas criará uma cópia do original em arq.veio. Se o cmd funcionar,
> > > então:
> > > $ rm arq.veio
> > > Senão:
> > > $ mv arq.veio arq
> > >
> > > Abcs,
> > > Julio
> > > *@juliobash
> > > *
> > >
> > >
> > >
> > > Em 28 de setembro de 2013 01:45, Anderson Junior <
> > > andersonscinfo@> escreveu:
> > >
> > > > **
> > > >
> > > >
> > > > Boa noite, eu tenho uma variavel com o seguinte conteudo " teste teste
> > "
> > > > nessa string tem espaços no inicio e no fim, eu programo com
> > > > freepascal/lazarus, e temos um comando/função chamada trim, eu faço
> > assim
> > > >
> > > > var:=Trim(var);
> > > >
> > > > o trim pega a variavel e remove os espaços no inicio e no fim da
> > > > palavra/frase, como eu faria isso em shell, de forma simples....
> > > >
> > > > Outra duvida que eu tenho, é que to gerando uns arquivos de log que as
> > > > vezes ficam com linhas em branco no fim do arquivo, ou se o log não tem
> > > > nada, mesmo assim tem algumas linhas em branco, como
> > removelas...pensei que
> > > > algo como o trim poderia resolver isso tbm....
> > > >
> > > > Att.
> > > > Anderson Junior
> > > >
> > > >
> > > >
> > >
> >
> >
> >
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]