![]() |
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her. |
Mere UNIX og Linux Forum Emner du måske kan finde Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Last Post |
| Hvis Så Else Logic | jadionne | UNIX for dummyer Spørgsmål & svar | 7 | 11-23-2007 04:27 AM |
| ikke kan få den logik | dineshr85 | Shell Programmering og Scripting | 3 | 10-11-2007 08:34 AM |
| Strange Logic | ganesh123 | Shell Programmering og Scripting | 5 | 03-20-2007 05:08 PM |
| hvad logikken | ramneek | IP Networking | 2 | 09-05-2005 08:42 AM |
| Hvordan starter jeg et program, når jeg starter min computer? | l008com | UNIX for dummyer Spørgsmål & svar | 1 | 06-23-2002 09:30 PM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
brug for en logisk at starte med awk / sh
Hej Venner,
Jeg fik stukket hvor starte med .. Jeg har en inddatafil gerne nedenfor. hvor jeg vil sammenligne skrive data med min læse data .. Problemet er, at læse data bør sammenlignes med den nyeste skrive data på denne adresse. Note-Begge skrive data & læse data er i samme fil. TXADDR & TXDATA middel-write RXADDR & RXDATA midler - læs Code:
120 : TXADDR : 00000000 Code:
240 : TXDATA 0000000000000001
280 : TXDATA 0000000000000002
320 : TXDATA 0000000000000003
360 : TXDATA 0000000000000004
400 : TXDATA 0000000000000005
Code:
1042 : RXADDR : 00000000 INPUT FILE 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
Thanks & Hilsen, user_prady Sidst redigeret af user_prady; 09-01-2008 på 01:28 AM.. |
|
||||
|
Hvis de altid blive modtaget i den rækkefølge, det blev sendt? Hvis ja, så prøv dette:
Code:
awk '/TX/ { print $NF }' datafile > sent
awk '/RX/ { print $NF }' datafile > received
diff sent received
Sidst redigeret af Annihilannic; 09-01-2008 på 01:39 AM.. Årsag: glemte 'datafile' |
|
||||
|
Citat:
Nr. sin ikke lide, at data ikke recevied indtil medmindre jeg angive for at læse udelukkende. Tænk på en RAM (Læs Access Memory) Jeg skriver til RAM af specifing TXADDR & TXDATA og jeg retrives de data, når jeg præcisere, at adresse med RXADDR, får jeg RXDATA dvs. senest skrevet på, at addresss. Faktisk Wrrtting og læsning er uafhængige af hinanden. Når jeg giver TXADDR & TXDATA (5 sprængtryk - I INPUT FILE kan du se fem linjer af indgående data contineously). Så efter at jeg vil læse disse værdier, når RXADDR kommer .. Antag at jeg skriftligt til den samme adresse to gange derefter læser fra denne adresse, så er det ll læse den seneste værdi, der er skrevet til den pågældende adresse. Tak user_prady Sidst redigeret af user_prady; 09-01-2008 på 02:09 AM.. |
|
||||
|
Noget som dette? (ikke testet meget)
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
|
|
||||
|
Citat:
Kan du give en kort idé hvad betyder denne erklæring for Code:
txdata[txaddr,++txindex[txaddr]] Hilsen, user_prady Sidst redigeret af user_prady; 09-01-2008 på 03:29 AM.. |
|
||||
|
Citat:
min ven Det synes at være ikke arbejder for denne sag 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
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 Pls give mig et forslag .. Hilsen, Pradyumna |
|
||||
|
Citat:
Så for at tage højde for din anden situation, alt hvad du behøver at gøre, er at nulstille txindex [txaddr] mod 0, hver gang en ny TXADDR er stødt på. Tilsvarende kan du nulstille rxindex [rxaddr] counter, hver gang en RXADDR er stødt på. |
![]() |
| Bogmærker |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|