Ola
Validar este arquivo é facil, basta definir o 'numero' do campo e uma
expressão regular.
awk -F: 'function validate(valor,nome){
if (valor !~ /[0-9A-Za-z]/) printf "Erro! Campo \"%s\" vazio na
linha %d\n",nome,NR
}
{validate($3,"nome"); validate($4,"tel")}' dados
Se o campo que vc informa não 'casar' com a expressão regular, um
aviso sera emitido. vc pode personalizar a mensagem de erro.
Agora, o seu outro problema de cortar o 'fulano de tal' é que vc manda
do awk pro bash, e o separador de campos do BASH tem que ser setado
também. Vc poderia fazer tudo em awk, inclusive.
#!/usr/bin/gawk -f
function insert(matr,nome,tel,tel1,tel2,mail,alias){
cmd = "insert into dados (matr,nome,tel,tel1,tel2,mail,alias) values" ;
return cmd
sprintf("('%s','%s','%s','%s','%s','%s')",matr,nome,tel,tel1,tel2,mail,alias);
}
BEGIN{ FS=":"; }
{
print insert($2,$3,$4,$5,$6,$7);
}
vc pode executar assim:
$ ./arquivo.awk dados > insert.sql
e ai mandar o mysql importar este arquivo.
Veja se isso lhe ajuda.
On 12/11/06, Vinicius Marques <address@hidden
<mailto:viniciusrt01%40pop.com.br>> wrote:
>
>
>
>
>
>
> Srs,
> Não tenho muita experiencia em Shell script e estava quebrando a cabeça
> para fazer uma insercao num BD e estava com os seguintes problemas.
>
> Os campos do texto que quero inserir estao dispostos da seguinte forma.
>
> :001:Fulano de tal:0xx21656565656: : : address@hidden
<mailto:fulano%40tal.net>: fulano
>
> Porém como mostrado na linha alguns cadastros eu tenho campos vazios.
> Nesse caso eu ja queri acrescentar
> um "nao informado" na hora da insercao". Outro problema é qdo eu rodo o
> script abaixo ele me incrementa no banco só que assim no campo matr OK
> tudo certo porem o nome "Fulano de tal" e distribuido nos outros campos
> nome=fulano, tel=de, tel1=tal..
> Será que poderiam me dar uma luz sobre o assunto, ou material diretriz
> qq força é bem vinda.
> Abraço
> Vinicius Marques
>
> #!/bin/sh
> data=date
> cat $1 | awk -F: '{ print $2 $3 $4 $5 $6 $7 }' | while read x y z k a b
> do
> /usr/local/mysql/bin/mysql -u root -e "insert into dados
> (matr,nome,tel,tel1,tel2,mail,alias) values
> ('$x','$y','$z','$k','$a','$b')" Locate
> #echo $x $y $z $k $a $b $c
> done
>
> if [ "$?" = "1" ]
> then
> wall Erro na inclusao do Registro $count
> echo "Erro na insercao de dados do dia $data no registro $count" >>
> result_$data.log
> fi
> done
>
>
> _______________________________________________________
> Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu
celular. Registre seu aparelho agora!
> http://br.mobile.yahoo.com/mailalertas/
<http://br.mobile.yahoo.com/mailalertas/>
>
>
>
--
Tiago B Peczenyj
Linux User #405772
# cd /pub
# more beer