![]() |
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| UNIX for Advanced & Expert Gebruikers Expert-to-Expert. Hier geavanceerde UNIX-, UNIX-commando's, Linux, Operating Systems, System Administration, programmering, Shell, Shell scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD. |
Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
|
||||
| Draad | Thread Starter | Forum | Antwoorden | Last Post |
| ftp controleren | ust | Programmeren en Shell Scripting | 0 | 07-10-2008 03:30 |
| Ksh gecontroleerd als string heeft 2 tekens en bevat geen cijfers? | developncode | UNIX voor Dummies Questions & Answers | 1 | 04-08-2008 04:19 PM |
| EOF de controle op de hieronder | ramkrix | Hoog Niveau Programmering | 10 | 03-11-2008 01:43 |
| Controle voor PXE | maestro @ Altiris | SUN Solaris | 5 | 05-25-2004 01:06 |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Controleren op bepaalde tekens
Kan iemand helpen met de volgende vraag .. Ik heb een bestand in de volgende notatie:
ID .... WAARDE A001 .... 100 B002 .... 200 A004 .... 300 B006 .... 100 A997 .... 200 B776 .... 400 Het is in een kolom-formaat, maar ik wil om te controleren of het ID veld begint altijd met met en A of B karakter dit is mijn logica tot nu toe: Als Character 1 niet gelijk A of B dan elkaar foutmelding anders voeren op het doen wat je wilt fi niet echt zeker hoe dat chech karakter 1 van elke regel niet gelijk is A of B habe volgende geprobeerd met nee nee Joi If [! grep '^ A "$ file | |! grep '^ B "$ bestand] vervolgens print "fout" anders print "het werkt" fi maar het bovenstaande niet werkt Ik denk dat het logisch als mijn unix begrip niet geweldig, kunt helpen. |
|
||||
|
BTW, je kan ook rondweg om dit in een script. Code:
awk '/(^A)|(^B)/ {num++} END {if(num > 0);printf("%d instances of A,B exist\n", num);}' column
'kolom' is het bestand waar ik het formaat dat u hebt opgegeven. |
|
||||
|
Ok het bovenstaande alleen mij vertellen hoeveel keer A of B waar in. Ik nodig ze te verzenden een foutmelding als een C-bestaan of anders haar geldboete te blijven verwerken bestand .. hoop dat het zinvoller
|
|
||||
|
De input-bestand: Code:
$ cat ttt ID .... VALUE ------------- A001 .... 100 C003 .... 800 B002 .... 200 corrupt data A004 .... 300 C003 .... 800 foo .... bar Het 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
De 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 Je kon doen een string met behulp van commando awk voor de koppeling, maar ik ben niet zeker hoe u wilt verwerken de lijn zodra u controleren of het goed ... dus dit is wellicht de meeste flexibiliteit. Laat het ons weten als je iets nodig hebt in het script uitgelegd. |
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|