Quebra de linha \n [RESOLVIDO]

1. Quebra de linha \n [RESOLVIDO]

Leonam Gama da Silva
leonamtotal90

(usa Ubuntu)

Enviado em 21/12/2010 - 11:03h

Alo pessoal! eu criei uma aplicação simples usando PyQt e Shell que informa atraves do ping se um terminal esta ligado. Pois bem no aplicativo o usuario pode adicionar novas maquinas no formato ""nome:ip"" que é adicionado no arquivo lista.dat ficando da seguinte forma:
leonam:192.168.14.181
servidor:192.168.14.254
leonardo:192.168.14.205

quem insere e exclui é um script shell abaixo:

#! /bin/bash
#atualiza lista.dat com nova relacao de ip's
function remove()
{
nova_lista=`cat lista.dat | grep -v $1`
echo -e $nova_lista > lista.dat
}

function adiciona()
{
echo -e $1 >> lista.dat
}

# $1 sinal enviado
# $2 string a ser adicionada ou removida
case $1 in
"add")adiciona $2 ;;
"sub")remove $2 ;;
esac

O problema que estou enfrentando é que ao remover a primeira linha por exemplo(ou qualquer outra que tenha sucessoras) a função remove nao reinsere a quebra de linha ficando todo o texto em uma única linha. Na hora que o arquivo é lido no python (tudo de uma vez) o programa testa uma unica linha tipo assim:
(fica um espaço entre as linhas mas é um ; nao? e se eu for excluir outra linha sera apagado todo o arquivo)
servidor:192.168.14.254 leonardo:192.168.14.205


  


2. Re: Quebra de linha \n [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 21/12/2010 - 20:10h

#! /bin/bash
#atualiza lista.dat com nova relacao de ip's
function remove()
{
nova_lista=`grep -v $1 lista.dat `
echo -e $nova_lista | sed 's/ /\n/'g > lista.dat
}

function adiciona()
{
echo -e $1 >> lista.dat
}

# $1 sinal enviado
# $2 string a ser adicionada ou removida
case $1 in
"add")adiciona $2 ;;
"sub")remove $2 ;;
esac



3. UPDATE

Perfil removido
removido

(usa Nenhuma)

Enviado em 22/12/2010 - 04:47h

Bem, segue uma versão que verifica se a string já foi adicionada no arquivo.
Também coloquei um uniq para filtrar seguramente entradas repetidas e um help on-line.

E um ultimo toque que tal filtrar o conteúdo da linha procurada e da string de entrada. Assim ocorreriam menos erros. Tipo usando cut -d ':' para separar o nome do ip e cut -d '.' para separar as faixas de IP.


Presente de natal. :)




#!/bin/bash
# Atualiza lista.dat com nova relacao de ip's
#
# since 1.0
# by leonamtotal
#
# version 1.1
# by fdmarp
#
# version 1.2
# by ./.ronin [ http://sekysu.blogspot.com ]
#
LIST='lista.dat'

function _remove()
{
N_LIST=$( cat $LIST | sort | uniq | grep -v $1 )
echo -e $N_LIST | sed 's/ /\n/g' > $LIST
}
# Verifica se ja existe a string fornecida no arquivo
# by ./.ronin
# at 2010-12-22 23:58
function _exists()
{
EXISTS[0]=$(grep $1 $LIST)
EXISTS[1]=$(echo ${EXISTS[0]} | sed 's/'$1'//g')

if [ ${#EXISTS[0]} -eq ${#EXISTS[1]} ]
then
echo "Adicionado: $1"
return 0
else
echo "Já existe: $1"
return 2
fi
}

function _adiciona()
{
_exists $1 &&
echo -e $1 >> $LIST
}

function _help()
{
SCRIPT_NM=$(echo $0 | sed 's/.*\///g')
echo -e "
$SCRIPT_NM
Atualiza lista.dat com nova relacao de ip's\n
Uso:
\t$SCRIPT_NM\t[opcao] string

\t[opcao] \t[ add, rm ] operacao a ser efetuada
\t[string]\tstring a ser adicionada ou removida
\nOpcoes\n
\tadd\tadiciona a string
\trm\tremove a string
\n( version 1.1 )
by ./.ronin [ http://sekysu.blogspot.com ]\n
"
}

case $1 in
'add')_adiciona $2 ;;
'sub')_remove $2 ;;
'--help, -h')_help ;;
*)_help;;
esac

exit


4. Re: Quebra de linha \n [RESOLVIDO]

Leonam Gama da Silva
leonamtotal90

(usa Ubuntu)

Enviado em 22/12/2010 - 11:07h

deu ceerto eu troquei :

nova_lista=`cat lista.dat | grep -v $1`
echo -e $nova_lista > lista.dat


por:

nova_lista=`grep -v $1 lista.dat `
echo -e $nova_lista | sed 's/ /\n/'g






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts