The UNIX and Linux Forums  

Go Back   UNIX og Linux Forums > Top Forums > UNIX for Advanced & Ekspertsøgning Brugere
.
google unix.com



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

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 Søg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 07-17-2008
SAMZ SAMZ is offline
Registreret Bruger
  
 

Join Date: Jun 2008
Stillinger: 18
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

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.
  #2 (permalink)  
Old 07-17-2008
phemanth24 phemanth24 is offline
Registreret Bruger
  
 

Join Date: Apr 2008
Beliggenhed: Hyderabad, Indien
Stillinger: 14
Prøv dette:

/ (^ A) | (^ B) / (num + +)
SLUT (if (num> 0); printf ( "% d forekomster af A, B findes \ n", num);)

Du kan ændre output den måde du ønsker.
  #3 (permalink)  
Old 07-17-2008
SAMZ SAMZ is offline
Registreret Bruger
  
 

Join Date: Jun 2008
Stillinger: 18
kan tilsyneladende ikke få ovenstående til at arbejde kan De forklare yderligere venligst
  #4 (permalink)  
Old 07-17-2008
phemanth24 phemanth24 is offline
Registreret Bruger
  
 

Join Date: Apr 2008
Beliggenhed: Hyderabad, Indien
Stillinger: 14
Hi Samz. Jeg skulle have yderligere uddybet.
Jeg sætter min kode i et script og kørte den med awk.


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

Øjeblikket det prints antallet af forekomster af A og B
  #5 (permalink)  
Old 07-17-2008
phemanth24 phemanth24 is offline
Registreret Bruger
  
 

Join Date: Apr 2008
Beliggenhed: Hyderabad, Indien
Stillinger: 14
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.
  #6 (permalink)  
Old 07-17-2008
SAMZ SAMZ is offline
Registreret Bruger
  
 

Join Date: Jun 2008
Stillinger: 18
Citat:
Oprindeligt Indsendt af phemanth24 View Post
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
  #7 (permalink)  
Old 07-17-2008
Diabolist Diabolist is offline
Registreret Bruger
  
 

Join Date: Mar 2002
Stillinger: 44
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.
Closed Thread

Bogmærker

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 07:52 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0