
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