![]() |
|
|
google unix.com
|
|||||||
| Forums | S'inscrire | Forum Rules | Liens | Albums | FAQ | Liste des membres | Calendrier | Recherche | Aujourd'hui, les postes | Marquer les forums comme lus |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
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. |
|
||||
|
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
|
|
||||
|
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é. |
![]() |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|