apanhando do sed

1. apanhando do sed

eduardo
baggre

(usa Ubuntu)

Enviado em 12/11/2008 - 10:33h

Olá pessoal...
Gostaria de fazer o seguinte script usado o sed
Gravar num determinado arquivo uma linha "x" em determinada posicao...
Meu arquivo tem dez linhas queria gravar na setima por exemplo...com opção de sobrepor ou não

grato
Eduardo


  


2. Re: apanhando do sed

Cloves Pereira Costa Jr
clovesjr

(usa Slackware)

Enviado em 12/11/2008 - 11:26h

Uma possibilidade é a seguinte: vc conta a quantidade de linhas do arquivo e vai até a posição que vc quer e faz as operações desejadas. Neste exemplo, o meu arquivo era um csv que tinha o IP na primeira coluna e algumas outras informações nas outras colunas e eu precisava importar os dados deste arquivo em um outro arquivo...

destino=<arquivo de destino>
pathfile=<arquivo de origem>
#Verifica a quantidade de linhas do arquivo
qtdlinhas=`awk 'END { print NR }' $pathfile`
for ((i=1;i<=$qtdlinhas;i++))
do
#Lê o IP da linha atual
ip=`awk -F";" 'NR == '$i' {print $1}' $pathfile`
#Valida o IP
ValidaIP
#Caso o ip esteja ok, continua a execução
if [ $ipok = S ]; then
echo -n "."
#Grava a descrição em um arquivo temporário
awk 'NR == '$i'' $pathfile | cut -d";" -f2-10 > /appl/desctemp.$$
#Substitui a vírgula por espaços
sed -i "s/\;/ /g" /appl/desctemp.$$
desc=`cat /appl/desctemp.$$`
#Monta a linha e grava em um arquivo temporário
echo "$ip # $desc - $data - $usrname" >> /appl/inclista.$$
#Verifica se chegou no fim do arquivo
if [ $i = $qtdlinhas ]; then
#Grava o arquivo temporário no arquivo final
awk 'NF>0' /appl/inclista.$$ >> $destino
echo " "
echo " "
echo " Foram incluídos $qtdlinhas registros com sucesso."
Quebra
fi
else
echo " "
echo " Existe um IP inválido no arquivo. Verifique e tente novamente..."
Quebra
fi
done

Dá uma olhada... pode ser que ajude...

[]s

Cloves Jr






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts