Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
site google



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Closed Thread
English Japanese Spanish French German Portuguese Italian Powered by Powered by Google
 
Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 09-28-2005
Usuário
 

Join Date: Jan 2005
Lugares: 683
Ksh Expressão

Quick questão relacionada com ksh expressões (não unix expressões regulares).

Estou tentando criar uma estrutura que irá identificar corretamente as linhas que correspondem aos seguintes CSV texto em um caso declaração:

Código:
filename.txt, filename.txt, alpha, nnnn, nnnn, nnnn, Free form text

Inicialmente eu simplesmente uma expressão usada como *,*,*,*,*,*,* no caso seguinte declaração:

Código:
case ${LINE} in
    # Expression 1..n are informational and specific enough that the
    # expressions work well
    expression 1..n)
             ... match expressions 1..n logic ... ;;

    # CSV lines contain 7 fields and 6 commas
    *,*,*,*,*,*,*)
         ... match valid CSV line logic ... ;;

    # Malformed CSV lines or any other not matching my list of expressions
    *)
         ... malformed CSV line or other mismatch ... ;;
esac

Problema:
Achei que a expressão corresponde *,*,*,*,*,*,* CSV casos como estes:

Código:
field1, field2, field3, field4, field5, field6, field7, field8, field9
field1, field2, field3, field4, field5, field6
field1, field2, field3, field4, field5, field6, field7,,,,,,,
,field1, field2, field3, field4, field5, field6, field7

Tenho tentado inúmeras variações e acabaram com esta expressão:

Código:
case ...
...
    @(*)@(,)@(*) ) ...
...
esac

Posso combinar com maior precisão, e isto unhas a menor CSV lista de "texto, texto", mas ainda tenho a incorporar alguns vírgula contando lógica, que não deseja incluir.

As vírgulas e / ou asteriscos estão a causar-me com complicações várias expressões que eu tenho tentado (essencialmente * jogos vírgulas). Produção código é muito difícil mudar onde eu trabalho, uma vez implementadas, de tal modo que eu gostaria de terminar uma expressão muito precisa agora e deixar o final *) expressão armadilha todos malformed linhas. O que estou fazendo errado?

Pela maneira, eu não tenho controle do arquivo de dados fornecidos mim para alterações na minha fonte de dados não irá acontecer.
Links Patrocinados
  #2 (permalink)  
Old 09-28-2005
Perderabo's Avatar
Unix Daemon
 

Join Date: Aug 2001
Localização: Ashburn, Virginia
Mensagens: 9.150
Post algumas amostra de dados válidos.
  #3 (permalink)  
Old 09-28-2005
Usuário
 

Join Date: Jan 2005
Lugares: 683

Código:
file1.txt, file1_original_name.txt, control1, 1001, 100001, 10000, Data Sample 1
file2.txt, file2_original_name.txt, control5, 2001, 100002, 10000, Data Sample 2
file3.txt, file3_original_name.txt, control7, 3001, 100003, 20000, Data Sample 3

  #4 (permalink)  
Old 09-28-2005
Perderabo's Avatar
Unix Daemon
 

Join Date: Aug 2001
Localização: Ashburn, Virginia
Mensagens: 9.150
Sheesh ....
Código:
#! /usr/bin/ksh

exec < data
while read line ; do
        case $line in
        +([_a-zA-Z0-9]).txt,+( )+([_a-zA-Z0-9]).txt,+( )+([a-zA-Z0-9]),+( )+([0-9]),+( )+([0-9]),+( )+([0-9]),* ) echo OK: $line
                ;;
        *)   echo XX: $line
                ;;
        esac
done
exit 0

  #5 (permalink)  
Old 09-28-2005
Usuário
 

Join Date: Jan 2005
Lugares: 683
Excelente. Isso me muito perto.

Linhas como esta ainda deve passar para a final "*":
Código:
file1.txt, file1_original_name.txt, control1, 1001, 100001, 10000, Data Sample 1,,,,,

A modificação da expressão ajuda a estreitar-lo:
Código:
+([_a-zA-Z0-9]).txt,+( )+([_a-zA-Z0-9]).txt,+( )+([a-zA-Z0-9]),+( )+([0-9]),+( )+([0-9]),+( )+([0-9]),+( )+([ a-zA-Z0-9]))

e acho que isso permite que qualquer coisa, mas uma vírgula no final do campo:

Código:
+([_a-zA-Z0-9]).txt,+( )+([_a-zA-Z0-9]).txt,+( )+([a-zA-Z0-9]),+( )+([0-9]),+( )+([0-9]),+( )+([0-9]),+( )+([!,])

Eu preciso puxar o arquivo um pouco, mas creio que tem a base para pregar estabelece uma expressão muito precisa.

Obrigado pela ajuda!

Thomas
Links Patrocinados
Closed Thread

Marcadores

Tags
regex, expressões regulares

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Desligado


Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Reg expressão para Harikrishna Programação Shell Script e 2 05-07-2008 02:40
error: initializer expressão lista tratados como compostos expressão arunchaudhary19 Programação 12 11-16-2007 06:44
Ajuda com Reg. Expressão moe2266 UNIX para Dummies Perguntas & Respostas 7 07-16-2007 05:05
Ou expressão Rock UNIX para Dummies Perguntas & Respostas 3 05-03-2007 09:50
Expressão Regular + Aritmetical Expressão Z0mby Programação Shell Script e 2 05-21-2002 11:59



Todos os horários são GMT -4. A hora é agora 05:43.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Brasil Content Copyright © 1993-2010. Todos os direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0