![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
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.. |
|
||||
|
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 ' |
|
||||
|
Sitat:
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.. |
|
||||
|
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
|
|
||||
|
Sitat:
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.. |
|
||||
|
Sitat:
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 |
|
||||
|
Sitat:
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. |
![]() |
| Hugseliste |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|