The UNIX and Linux Forums  

Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
Als Dan Else Logic jadionne UNIX voor Dummies Questions & Answers 7 11-23-2007 04:27
kan niet de logica dineshr85 Programmeren en Shell Scripting 3 10-11-2007 08:34
Strange Logic ganesh123 Programmeren en Shell Scripting 5 03-20-2007 05:08 PM
wat de logica ramneek IP Networking 2 09-05-2005 08:42
Hoe begin ik een programma als ik mijn computer? l008com UNIX voor Dummies Questions & Answers 1 06-23-2002 09:30 PM

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 Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 09-01-2008
user_prady user_prady is offline
Geregistreerde gebruiker
  
 

Join Date: Sep 2007
Posts: 163
behoefte aan een logica om te beginnen met awk / sh

Hallo Vrienden,

Ik heb geplakt waar te beginnen met ..

Ik heb een invoerbestand zoals hieronder. waar ik wil schrijven gegevens te vergelijken met mijn data te lezen .. Het probleem is dat de data te lezen moeten worden vergeleken met de laatste schrijven van gegevens op dat adres.

Notitiemaker Beide schrijven data & data te lezen zijn in hetzelfde bestand.
TXADDR & TXDATA middel-write
RXADDR & RXDATA middel - lees


Code:
 120 : TXADDR  : 00000000

betekent op het moment 120 Ik ben het verzenden van een TXADDR -00000000 & de gegevens die moeten worden geschreven zijn, zoals hieronder

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

Volgende wanneer
Code:
 1042 : RXADDR  : 00000000

Het komt de tijd om te lezen van dat adres 00000000 terugkeert me de gegevens wat er geschreven voordat ie de laatste ..


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

Als er enige verwarring met mijn uitleg pls commentaar.

Thanks &
Groeten,
user_prady

Laatst gewijzigd door user_prady; op 09.01.2008 01:28..
  #2 (permalink)  
Old 09-01-2008
Annihilannic Annihilannic is offline Forum Advisor  
  
 

Join Date: mei 2008
Locatie: Sydney, Australië
Berichten: 1009
Moeten de gegevens altijd worden ontvangen in de volgorde waarin zij is verzonden? Zo ja, probeer dit:


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


Laatst gewijzigd door Annihilannic; op 09.01.2008 01:39.. Reden: vergat de "datafile"
  #3 (permalink)  
Old 09-01-2008
user_prady user_prady is offline
Geregistreerde gebruiker
  
 

Join Date: Sep 2007
Posts: 163
Citaat:
Oorspronkelijk geplaatst door Annihilannic View Post
Moeten de gegevens altijd worden ontvangen in de volgorde waarin zij is verzonden? Zo ja, probeer dit:


Code:
awk '/TX/ { print $NF }' datafile > sent
awk '/RX/ { print $NF }' datafile > received
diff sent received
Bedankt voor uw antwoord .. & Sorry als ik u verkeerd ..

Nr. haar niet graag dat de gegevens niet recevied tot tenzij ik te lezen uitsluitend. Denk aan een RAM-geheugen (Read Access Memory)

Ik schreef naar RAM door specifing TXADDR & TXDATA en ik retrives de gegevens als ik dat adres met RXADDR, krijg ik RXDATA dwz laatste geschreven op dat adres.


Eigenlijk Wrrtting en lezen zijn onafhankelijk van elkaar.

Zodra ik TXADDR & TXDATA (5 burst - In INPUT FILE zie je vijf regels van gegevens contineously). Toen na dat ik ben gaan lezen die waarden als RXADDR komt ..

Stel, ik ben schriftelijke naar hetzelfde adres tweemaal dan het lezen van dat adres, dan kom de laatste waarde die is geschreven naar dat adres.

Bedankt
user_prady

Laatst gewijzigd door user_prady; op 09.01.2008 02:09..
  #4 (permalink)  
Old 09-01-2008
Annihilannic Annihilannic is offline Forum Advisor  
  
 

Join Date: mei 2008
Locatie: Sydney, Australië
Berichten: 1009
Iets als dit? (niet getest veel)


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
Geregistreerde gebruiker
  
 

Join Date: Sep 2007
Posts: 163
Citaat:
Oorspronkelijk geplaatst door Annihilannic View Post
Iets als dit? (niet getest veel)


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
Dankzij genious Annihilannic .. Echt appriciate uw logica ..

Kunt u een korte idee wat doet deze verklaring voor

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

Ik denk dat dit een 2D-array, maar als ik print dat alleen geeft me fout.

Groeten,
user_prady

Laatst gewijzigd door user_prady; op 09.01.2008 03:29..
  #6 (permalink)  
Old 09-01-2008
user_prady user_prady is offline
Geregistreerde gebruiker
  
 

Join Date: Sep 2007
Posts: 163
Citaat:
Oorspronkelijk geplaatst door user_prady View Post
Dankzij genious Annihilannic .. Echt appriciate uw logica ..

Kunt u een korte idee wat doet deze verklaring voor

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

Ik denk dat dit een 2D-array, maar als ik print dat alleen geeft me fout.

Groeten,
user_prady

mijn vriend Het lijkt niet voor dit geval

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

Hier worden de in de bovenstaande input bestand hetzelfde adres (dat wil zeggen, in het adres 00000000 Ik ben schriftelijke tweemaal en het lezen van de gegevens een keer en de laatste gegevens zijn matching met de data te lezen, maar in mijn programma zijn zeggen niet matching)

Pls geef me een suggestie ..

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

Join Date: mei 2008
Locatie: Sydney, Australië
Berichten: 1009
Citaat:
Oorspronkelijk geplaatst door user_prady View Post
Kunt u een korte idee wat doet deze verklaring voor

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

Ik denk dat dit een 2D-array, maar als ik print dat alleen geeft me fout.
Ja, het is een twee-dimensionale array geïndexeerd door het adres en een index. De indexen zelf worden gehouden in een tweede-timensional array, txindex [].

Dus om te voorzien in uw tweede situatie, alles wat je moet doen is de reset txindex [txaddr] teller op 0 elke keer een nieuwe TXADDR wordt aangetroffen. Ook kunt u de rxindex [rxaddr] counter elke keer een RXADDR wordt aangetroffen.
Closed Thread

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 08:28 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0