The UNIX and Linux Forums  
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.

Go Back   UNIX og Linux Forums > Top Forums > Shell Programmering og Scripting
.
google unix.com



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

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 09-01-2008
user_prady user_prady is offline
Registreret Bruger
  
 

Join Date: Sep 2007
Posts: 163
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
midler tid 120 Jeg sender en TXADDR -00000000 & de data, der skal skrives er som nedenfor
Code:
     240 : TXDATA  0000000000000001
     280 : TXDATA  0000000000000002
     320 : TXDATA  0000000000000003
     360 : TXDATA  0000000000000004
     400 : TXDATA  0000000000000005
Næste, når
Code:
 1042 : RXADDR  : 00000000
kommer det tid til at læse fra denne adresse 00000000 returnerer mig data, hvad der er skrevet før dvs. det sidste ..


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
Hvis der er en vis forvirring med min forklaring pls kommentar.

Thanks &
Hilsen,
user_prady

Sidst redigeret af user_prady; 09-01-2008 på 01:28 AM..
  #2 (permalink)  
Old 09-01-2008
Annihilannic Annihilannic is offline Forum Advisor  
  
 

Join Date: May 2008
Location: Sydney, Australien
Stillinger: 1009
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'
  #3 (permalink)  
Old 09-01-2008
user_prady user_prady is offline
Registreret Bruger
  
 

Join Date: Sep 2007
Posts: 163
Citat:
Oprindeligt Indsendt af Annihilannic View Post
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
Tak for dit svar .. & Beklager Hvis jeg misforstået dig ..

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..
  #4 (permalink)  
Old 09-01-2008
Annihilannic Annihilannic is offline Forum Advisor  
  
 

Join Date: May 2008
Location: Sydney, Australien
Stillinger: 1009
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
  #5 (permalink)  
Old 09-01-2008
user_prady user_prady is offline
Registreret Bruger
  
 

Join Date: Sep 2007
Posts: 163
Citat:
Oprindeligt Indsendt af Annihilannic View Post
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
Takket genious Annihilannic .. Really appriciate din logik ..

Kan du give en kort idé hvad betyder denne erklæring for
Code:
txdata[txaddr,++txindex[txaddr]]
Jeg tror det er et 2D array men når jeg udskriver, at kun det giver mig fejl.

Hilsen,
user_prady

Sidst redigeret af user_prady; 09-01-2008 på 03:29 AM..
  #6 (permalink)  
Old 09-01-2008
user_prady user_prady is offline
Registreret Bruger
  
 

Join Date: Sep 2007
Posts: 163
Citat:
Oprindeligt Indsendt af user_prady View Post
Takket genious Annihilannic .. Really appriciate din logik ..

Kan du give en kort idé hvad betyder denne erklæring for
Code:
txdata[txaddr,++txindex[txaddr]]
Jeg tror det er et 2D array men når jeg udskriver, at kun det giver mig fejl.

Hilsen,
user_prady

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
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 er det i ovenstående input fil samme adresse (dvs. i adresse 00000000 jeg skriftligt to gange og læse data én gang og de seneste data er kongruente med læse data, men i mit program sin siger ikke matching)

Pls give mig et forslag ..

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

Join Date: May 2008
Location: Sydney, Australien
Stillinger: 1009
Citat:
Oprindeligt Indsendt af user_prady View Post
Kan du give en kort idé hvad betyder denne erklæring for
Code:
txdata[txaddr,++txindex[txaddr]]
Jeg tror det er et 2D array men når jeg udskriver, at kun det giver mig fejl.
Ja, det er et todimensionelt array indekseret af adressen og et indeks. Indeksene selv er holdt i en anden en-timensional array, txindex [].

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å.
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:45 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