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 <[EMAIL PROTECTED]> 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: : : [EMAIL PROTECTED]: 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/
>
>
>                    



-- 
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer

Responder a