The UNIX and Linux Forums  


Go Back   Les systèmes UNIX et Linux Forums > Top Forums > UNIX for Advanced & Expert Users
.
google unix.com



UNIX for Advanced & Expert Users Expert à Expert. Apprenez avancé UNIX, des commandes UNIX, Linux, les systèmes d'exploitation, d'administration système, de la Programmation, Shell, Shell Scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
ftp contrôle ust De programmation et de script Shell 0 07-10-2008 03:30 AM
Ksh Vérifier si la chaîne de caractères est de 2 caractères et ne contient pas de chiffres? developncode UNIX pour les nuls Questions et réponses 1 04-08-2008 04:19 PM
EOF vérification ci-dessous ramkrix High Level Programming 10 03-11-2008 01:43 AM
Vérification de PXE maestro @ Altiris SUN Solaris 5 05-25-2004 01:06 AM

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 Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 07-17-2008
SAMZ SAMZ is offline
Registered User
  
 

Date d'inscription: juin 2008
Posts: 18
Vérification de certains caractères

Peut-on aider à l'enquête ci-après .. j'ai un fichier dans le format suivant:

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

Il est dans le format d'une colonne, mais je veux vérifier que le champ ID commence toujours par de A ou B, et ce caractère est ma logique à ce jour:


Si des caractères n'est pas égal à 1 A ou B
puis
affichage message d'erreur
autre
porter sur la façon de faire ce que vous voulez
fi

pas vraiment sûr de savoir comment CHECH que le caractère de chaque ligne 1 n'est pas égal à A ou B
habe essayé sans aucune suite Joi

Si [! grep '^ A' $ file | |! grep '^ B' $ file] then
print "erreur"
autre
print "ça marche"
fi

mais ci-dessus ne fonctionne pas je crois que c'est logique que mon unix n'a pas une très grande compréhension, s'il vous plaît aider.
  #2 (permalink)  
Old 07-17-2008
phemanth24 phemanth24 is offline
Registered User
  
 

Date d'inscription: avril 2008
Endroit: Hyderabad, Inde
Posts: 14
Essayez ceci:

/ (^ A) | (^ B) / (num + +)
END (if (num> 0) printf ( "% d cas de A, B existe \ n", num);)

Vous pouvez modifier le résultat de la façon dont vous le souhaitez.
  #3 (permalink)  
Old 07-17-2008
SAMZ SAMZ is offline
Registered User
  
 

Date d'inscription: juin 2008
Posts: 18
n'arrive pas à obtenir le plus haut au travail pourrait vous expliquer s'il vous plaît
  #4 (permalink)  
Old 07-17-2008
phemanth24 phemanth24 is offline
Registered User
  
 

Date d'inscription: avril 2008
Endroit: Hyderabad, Inde
Posts: 14
Salut Samz. Je devrais avoir précisé.
Je mets mon code dans un script et a couru avec awk.


Code:
awk -f <script name> <file>

Actuellement, il affiche le nombre de cas de A et B
  #5 (permalink)  
Old 07-17-2008
phemanth24 phemanth24 is offline
Registered User
  
 

Date d'inscription: avril 2008
Endroit: Hyderabad, Inde
Posts: 14
BTW, vous pouvez contourner cela en mettant un script.


Code:
awk '/(^A)|(^B)/ {num++} END {if(num > 0);printf("%d instances of A,B exist\n", num);}' column

«colonne» est le dossier où j'ai le format que vous avez spécifié.
  #6 (permalink)  
Old 07-17-2008
SAMZ SAMZ is offline
Registered User
  
 

Date d'inscription: juin 2008
Posts: 18
Citation:
Posté par phemanth24 View Post
BTW, vous pouvez contourner cela en mettant un script.


Code:
awk '/(^A)|(^B)/ {num++} END {if(num > 0);printf("%d instances of A,B exist\n", num);}' column

«colonne» est le dossier où j'ai le format que vous avez spécifié.
Ok ci-dessus ne me dire combien de fois A ou B, où là-dedans. J'ai besoin d'envoyer un message d'erreur s'il existe un C ou d'une autre amende de continuer à traiter le fichier .. espérons que plus de sens
  #7 (permalink)  
Old 07-17-2008
Diabolist Diabolist is offline
Registered User
  
 

Join Date: Mar 2002
Posts: 44
Le fichier d'entrée:


Code:
$ cat ttt
ID .... VALUE
-------------
A001 .... 100
C003 .... 800
B002 .... 200
corrupt
data
A004 .... 300
C003 .... 800
foo .... bar

Le script:

Code:
#!/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

Le résultat:

Code:
$ ./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

Vous pouvez faire une seule chaîne de commandes en utilisant awk pour le filtrage, mais je ne suis pas sûr de la façon dont vous souhaitez traiter la ligne une fois que vous vérifiez que c'est bon ... mai, cette offre le plus de flexibilité.

Faites-nous savoir si vous avez besoin de quoi que ce soit dans le script expliqué.
Closed Thread

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 05:28 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0