![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| UNIX for Advanced & Ekspertsøgning Brugere Expert-til-ekspert. Lær avancerede UNIX, UNIX-kommandoer, Linux operativsystemer, systemadministration, programmering, Shell, Shell Scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD. |
Mere UNIX og Linux Forum Emner du måske kan finde Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Last Post |
| ftp kontrol | ust | Shell Programmering og Scripting | 0 | 07-10-2008 03:30 AM |
| Ksh Kontrol hvis strengen har 2 bogstaver og ikke indeholder cifre? | developncode | UNIX for dummyer Spørgsmål & svar | 1 | 04-08-2008 04:19 PM |
| EOF kontrollere nedenfor | ramkrix | Højtstående Programmering | 10 | 03-11-2008 01:43 AM |
| Kontrol for PXE | maestro @ Altiris | Sun Solaris | 5 | 05-25-2004 01:06 AM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
Kontrol for visse tegn
Kan nogen hjælpe med følgende forespørgsel .. Jeg har en fil i følgende format:
ID .... VÆRDI A001 .... 100 B002 .... 200 A004 .... 300 B006 .... 100 A997 .... 200 B776 .... 400 Det er i en kolonne format, men jeg ønsker at kontrollere, at ID felt begynder altid med, og A-eller B-karakter det er min logik hidtil: Hvis Tegn 1 ikke lige A eller B så display fejlmeddelelse anden carry om at gøre hvad du vil fi ikke rigtig sikker på, hvordan du Chech at karakter 1 i hver linje ikke lige A eller B habe prøvet følgende med nej nej joi Hvis [! grep '^ A' $ file | |! grep '^ B' $ file] derefter print "error" anden print "det virker" fi men ovenstående ikke virker Jeg tror, at det logik som min UNIX forståelse ikke stor, kan du hjælpe. |
|
||||
|
BTW, kunne du også gå uden at sætte dette i et script. Code:
awk '/(^A)|(^B)/ {num++} END {if(num > 0);printf("%d instances of A,B exist\n", num);}' column
"kolonne" er den fil, hvor jeg har det format, du har angivet. |
|
||||
|
Ok ovenstående kun fortælle mig, hvor mange gange A eller B, hvor i der. Jeg kræver det at sende en fejlmeddelelse, hvis en C eksisterer eller anden måde sin bøde til fortsat behandling fil .. håber, at mere mening
|
|
||||
|
Input fil: Code:
$ cat ttt ID .... VALUE ------------- A001 .... 100 C003 .... 800 B002 .... 200 corrupt data A004 .... 300 C003 .... 800 foo .... bar Scriptet: 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
Output: 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 Du kan gøre en enkelt streng af kommandoer vha. awk for mønstertilpasning, men jeg er ikke sikker på, hvordan du vil behandle den linje, når du kontrollere, det er godt ... så denne kan tilbyde de mest fleksibilitet. Lad os vide, hvis du har brug for noget i scriptet forklaret. |
![]() |
| Bogmærker |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|