The UNIX and Linux Forums  

Go Back   O UNIX e Linux Forum > Top Fóruns > UNIX & avançada para usuários experientes
.
google unix.com



UNIX & avançada para usuários experientes Especialista-a-Expert. Saiba avançado UNIX, comandos UNIX, Linux, Sistemas Operativos, Administração de Sistemas, Programação, Shell, shell scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
ftp controlo ust Programação Shell Script e 0 07-10-2008 03:30
Ksh Verificar se string tem 2 caracteres e não contém dígitos? developncode UNIX para Dummies Perguntas & Respostas 1 04-08-2008 04:19
EOF verificar a seguir ramkrix Alto Nível de programação 10 03-11-2008 01:43
Verificado por PXE maestro @ Altiris Sun Solaris 5 05-25-2004 01:06

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 07-17-2008
SAMZ SAMZ is offline
Usuário
  
 

Join Date: Jun 2008
Lugares: 18
Verificado para determinados caracteres

Alguém poderia ajudar com a seguinte solicitação .. Eu tenho um arquivo no seguinte formato:

ID .... VALOR
A001 .... 100
B002 .... 200
A004 .... 300
B006 .... 100
A997 .... 200
B776 .... 400

É no formato de uma coluna, mas gostaria de verificar que o campo ID sempre começa com A ou B e com carácter esta é a minha lógica até agora:


Se Caracteres não é igual a 1 A ou B
então
exibir mensagem de erro
diferente
continuar a fazer o que quiser
fi

Não tenho certeza quanto ao carácter chech que 1 de cada linha não é igual a A ou B
habe tentou seguir sem nenhum Joi

Se [! grep '^ A' $ file | |! grep '^ B' $ file] então
print "erro"
diferente
print "funciona"
fi

mas o trabalho acima não creio que a lógica que o meu entendimento não unix grande, por favor ajudar.
  #2 (permalink)  
Old 07-17-2008
phemanth24 phemanth24 is offline
Usuário
  
 

Join Date: Apr 2008
Local: Hyderabad, Índia
Lugares: 14
Tente este:

/ (^ A) | (^ B) / + + (número)
FIM (if (num> 0) printf ( "% d ocorrências de A, B existir \ n", num);)

Você pode modificar o resultado da maneira que quiser.
  #3 (permalink)  
Old 07-17-2008
SAMZ SAMZ is offline
Usuário
  
 

Join Date: Jun 2008
Lugares: 18
Parece que não pode ficar acima do que poderia explicar a trabalhar mais por favor
  #4 (permalink)  
Old 07-17-2008
phemanth24 phemanth24 is offline
Usuário
  
 

Join Date: Apr 2008
Local: Hyderabad, Índia
Lugares: 14
Oi Samz. Eu devia ter elaborado mais.
Eu coloquei meu código em um script e correu com ela awk.

Código:
awk -f <script name> <file>
Atualmente ela imprime o número de instâncias de A e B
  #5 (permalink)  
Old 07-17-2008
phemanth24 phemanth24 is offline
Usuário
  
 

Join Date: Apr 2008
Local: Hyderabad, Índia
Lugares: 14
BTW, você pode também ignorar colocar isto em um script.

Código:
awk '/(^A)|(^B)/ {num++} END {if(num > 0);printf("%d instances of A,B exist\n", num);}' column
"coluna" é o ficheiro onde tenho o formato que você especificou.
  #6 (permalink)  
Old 07-17-2008
SAMZ SAMZ is offline
Usuário
  
 

Join Date: Jun 2008
Lugares: 18
Citação:
Originally Posted by phemanth24 View Post
BTW, você pode também ignorar colocar isto em um script.

Código:
awk '/(^A)|(^B)/ {num++} END {if(num > 0);printf("%d instances of A,B exist\n", num);}' column
"coluna" é o ficheiro onde tenho o formato que você especificou.
Ok, apenas a dizer-me quantas vezes A ou B, em que existe. I exigir-lhe que envie uma mensagem de erro se existir um C ou outra multa para continuar seu processamento arquivo .. Espero que faça mais sentido
  #7 (permalink)  
Old 07-17-2008
Diabolist Diabolist is offline
Usuário
  
 

Join Date: Mar 2002
Lugares: 44
O arquivo de entrada:

Código:
$ cat ttt
ID .... VALUE
-------------
A001 .... 100
C003 .... 800
B002 .... 200
corrupt
data
A004 .... 300
C003 .... 800
foo .... bar
O script:
Código:
#!/bin/ksh

INPUT=ttt

{ while read LINE
do
  echo $LINE |egrep "^A|^B" > /dev/null 2>&1
  if [ $? -eq 0 ]
  then
    echo "Processing $LINE"
  else
    echo "Skipping $LINE"
  fi
done } < $INPUT
A saída:
Código:
$ ./ttt.ksh
Skipping ID .... VALUE
Skipping -------------
Processing A001 .... 100
Skipping C003 .... 800
Processing B002 .... 200
Skipping corrupt
Skipping data
Processing A004 .... 300
Skipping C003 .... 800
Skipping foo .... bar
Você poderia fazer uma única seqüência de comandos usando awk para a correspondência por padrão, mas não sei como você quer processar a linha depois de verificar que é bom ... pelo que esta pode oferecer a mais flexibilidade.

Deixe-nos saber se você precisar de alguma coisa no script explicou.
Closed Thread

Marcadores

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 Ligado




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


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 Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0