The UNIX and Linux Forums  


Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
Hvis Da Else Logic jadionne UNIX for Dummies Spørsmål og svar 7 11-23-2007 04:27
kan ikke komme logikken dineshr85 Shell programmering og Skripting 3 10-11-2007 08:34
Stange Logic ganesh123 Shell programmering og Skripting 5 03-20-2007 05:08
hva logikken ramneek IP Networking 2 09-05-2005 08:42
Hvordan starter jeg et program når jeg starter datamaskinen min? l008com UNIX for Dummies Spørsmål og svar 1 06-23-2002 09:30

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øk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 09-01-2008
user_prady user_prady is offline
Registrert bruker
  
 

Bli Dato: Sep 2007
Innlegg: 163
trenger en logikk å starte med awk / sh

Hei Venner,

Jeg ble sittende fast der til å begynne med ..

Jeg har en inndatafil som nedenfor. hvor jeg vil sammenligne skrive data med min lese data .. Problemet er at lese dataene skal sammenlignes med de nyeste skrive data på denne adressen.

Note-Både skrive data og lese data i den samme filen.
TXADDR & TXDATA middel-skriver
RXADDR & RXDATA betyr - les


Code:
 120 : TXADDR  : 00000000

betyr at tiden 120 Jeg sender en TXADDR -00000000 og dataene som skal skrives er like nedenfor

Code:
     240 : TXDATA  0000000000000001
     280 : TXDATA  0000000000000002
     320 : TXDATA  0000000000000003
     360 : TXDATA  0000000000000004
     400 : TXDATA  0000000000000005

Neste når
Code:
 1042 : RXADDR  : 00000000

kommer det tid til å lese fra den adressen 00000000 returnerer meg data hva som er skrevet før dvs. det siste ..


Inndatafilen

Code:
     120 : TXADDR  : 00000000
     240 : TXDATA  0000000000000001
     280 : TXDATA  0000000000000002
     320 : TXDATA  0000000000000003
     360 : TXDATA  0000000000000004
     400 : TXDATA  0000000000000005
    1042 : RXADDR  : 00000000
    1080 : TXADDR  : 00000020
    1200 : TXDATA  0000000000000011
    1240 : TXDATA  0000000000000012
    1280 : TXDATA  0000000000000013
    1320 : TXDATA  0000000000000014
    1321 : RXDATA  0000000000000001
    1360 : TXDATA  0000000000000015
    1361 : RXDATA  0000000000000002
    1401 : RXDATA  0000000000000003
    1441 : RXDATA  0000000000000004
    1481 : RXDATA  0000000000000005
    1880 : TXADDR  : 00000040
    2000 : TXDATA  0000000000000021
    2040 : TXDATA  0000000000000022
    2080 : TXDATA  0000000000000023
    2120 : TXDATA  0000000000000024
    2120 : TXDATA  0000000000000025

Hvis det er noen misforståelser med min forklaring pls kommentar.

Takk &
Hilsen,
user_prady

Sist endret av user_prady; 09-01-2008 på 01:28..
  #2 (permalink)  
Old 09-01-2008
Annihilannic Annihilannic is offline Forum Advisor  
  
 

Bli Dato: mai 2008
Beliggenhet: Sydney, Australia
Innlegg: 1009
Bør data alltid være mottatt i den rekkefølgen den ble sendt? Hvis ja, prøv dette:


Code:
awk '/TX/ { print $NF }' datafile > sent
awk '/RX/ { print $NF }' datafile > received
diff sent received


Sist endret av Annihilannic; 09-01-2008 på 01:39.. Grunn: glemte "datafile '
  #3 (permalink)  
Old 09-01-2008
user_prady user_prady is offline
Registrert bruker
  
 

Bli Dato: Sep 2007
Innlegg: 163
Sitat:
Originally Posted by Annihilannic View Post
Bør data alltid være mottatt i den rekkefølgen den ble sendt? Hvis ja, prøv dette:


Code:
awk '/TX/ { print $NF }' datafile > sent
awk '/RX/ { print $NF }' datafile > received
diff sent received
Takk for svar .. & Beklager Hvis jeg misguided du ..

Nei det er ikke slik at dataene ikke recevied til med mindre jeg å lese eksklusivt. Tenk på som en RAM (lesetilgang Memory)

Jeg skriver til RAM ved specifing TXADDR & TXDATA og jeg retrives data når jeg spesifisere at adressen med RXADDR, får jeg RXDATA dvs. siste skrevet om at addresss.


Egentlig Wrrtting og lesing er uavhengige av hverandre.

Når jeg gir TXADDR & TXDATA (5 burst - I inndatafilen kan du se fem linjer med input data contineously). Så etter at jeg kommer til å lese disse verdiene når RXADDR kommer ..

Anta at jeg writting til samme adresse to ganger og deretter leser fra den aktuelle adressen, så ll lese siste verdien som er skrevet til denne adressen.

Takk
user_prady

Sist endret av user_prady; 09-01-2008 på 02:09..
  #4 (permalink)  
Old 09-01-2008
Annihilannic Annihilannic is offline Forum Advisor  
  
 

Bli Dato: mai 2008
Beliggenhet: Sydney, Australia
Innlegg: 1009
Noe sånt som dette? (ikke testet mye)


Code:
awk '
        /TXADDR/ { txaddr=$NF }
        /RXADDR/ { rxaddr=$NF }
        /TXDATA/ { txdata[txaddr,++txindex[txaddr]]=$NF }
        /RXDATA/ {
                if ($NF != txdata[rxaddr,++rxindex[rxaddr]]) {
                        print "rxdata " $NF " for address " rxaddr " does not match transmitted: " txdata[rxaddr,rxindex[rxaddr]]
                }
        }
' inputfile

  #5 (permalink)  
Old 09-01-2008
user_prady user_prady is offline
Registrert bruker
  
 

Bli Dato: Sep 2007
Innlegg: 163
Sitat:
Originally Posted by Annihilannic View Post
Noe sånt som dette? (ikke testet mye)


Code:
awk '
        /TXADDR/ { txaddr=$NF }
        /RXADDR/ { rxaddr=$NF }
        /TXDATA/ { txdata[txaddr,++txindex[txaddr]]=$NF }
        /RXDATA/ {
                if ($NF != txdata[rxaddr,++rxindex[rxaddr]]) {
                        print "rxdata " $NF " for address " rxaddr " does not match transmitted: " txdata[rxaddr,rxindex[rxaddr]]
                }
        }
' inputfile
Takk genious Annihilannic .. Really appriciate din logikk ..

Kan du gi en kort hva betyr dette utsagnet for

Code:
txdata[txaddr,++txindex[txaddr]]

Jeg tror dette er en 2D array men når jeg skriver ut som bare det gir meg feil.

Hilsen,
user_prady

Sist endret av user_prady; 09-01-2008 på 03:29..
  #6 (permalink)  
Old 09-01-2008
user_prady user_prady is offline
Registrert bruker
  
 

Bli Dato: Sep 2007
Innlegg: 163
Sitat:
Originally Posted by user_prady View Post
Takk genious Annihilannic .. Really appriciate din logikk ..

Kan du gi en kort hva betyr dette utsagnet for

Code:
txdata[txaddr,++txindex[txaddr]]

Jeg tror dette er en 2D array men når jeg skriver ut som bare det gir meg feil.

Hilsen,
user_prady

min venn Det ser ut til å ikke jobbe for denne saken

INFILE


Code:
     120 : TXADDR  : 00000000
     240 : TXDATA  0000000000000011
     280 : TXDATA  0000000000000012
     320 : TXDATA  0000000000000013
     360 : TXDATA  0000000000000014
    1080 : TXADDR  : 00000000
    1200 : TXDATA  0000000000000001
    1240 : TXDATA  0000000000000002
    1280 : TXDATA  0000000000000003
    1320 : TXDATA  0000000000000004
    2002 : RXADDR  : 00000000
    2040 : TXADDR  : 00000020
    2160 : TXDATA  0000000000000011
    2200 : TXDATA  0000000000000012
    2240 : TXDATA  0000000000000013
    2280 : TXDATA  0000000000000014
    2281 : RXDATA  0000000000000001
    2321 : RXDATA  0000000000000002
    2361 : RXDATA  0000000000000003
    2401 : RXDATA  0000000000000004

OUTPUT

Code:
rxdata 0000000000000001 for address 00000000 does not match transmitted: 0000000000000011
rxdata 0000000000000003 for address 00000000 does not match transmitted: 0000000000000012
rxdata 0000000000000003 for address 00000000 does not match transmitted: 0000000000000013
rxdata 0000000000000004 for address 00000000 does not match transmitted: 0000000000000014

Her i over inndatafilen samme adresse (dvs. i adressen 00000000 Jeg writting to ganger og lese dataene på en gang, og de nyeste dataene er samsvarende med lese data, men i min programmet sitt sier ikke passer)

Pls gi meg et forslag ..

Hilsen,
Pradyumna
  #7 (permalink)  
Old 09-02-2008
Annihilannic Annihilannic is offline Forum Advisor  
  
 

Bli Dato: mai 2008
Beliggenhet: Sydney, Australia
Innlegg: 1009
Sitat:
Originally Posted by user_prady View Post
Kan du gi en kort hva betyr dette utsagnet for

Code:
txdata[txaddr,++txindex[txaddr]]

Jeg tror dette er en 2D array men når jeg skriver ut som bare det gir meg feil.
Ja, det er en todimensjonal array indekseres av adresse og en indeks. Registrene selv holdes i andre en-timensional matrise, txindex [].

Så for å imøtekomme for andre situasjonen, alt du trenger å gjøre er å tilbakestille txindex [txaddr] counter til 0 hver gang en ny TXADDR er oppstått. Likeledes kan du tilbakestille rxindex [rxaddr] teller hver gang en RXADDR er oppstått.
Closed Thread

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 12:43.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0