Προς το περιεχόμενο

Απορία σε εργασία στο unix!!!


elinapara

Προτεινόμενες αναρτήσεις

Γεια σας!!! Προσπαθώ να κάνω ένα πρόγραμμα σεναρίου κελύφους και έχω ένα προβληματάκι..

Θέλω να πάρω δεδομενα από ένα αρχείο και να καταχωρώ σε ένα πίνακα..

Από ότι διάβασα είναι κάπως έτσι:

 

pinakas.txt

 

το έκανα αυτό αλλά μου εμφανίζει λάθος στη 2η γραμμή στο END.

Αν ξέρει κανείς...ας με βοηθήσει.:o

Ευχαριστώ πολύ!!!:-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Γεια σας!!! Προσπαθώ να κάνω ένα πρόγραμμα σεναρίου κελύφους και έχω ένα προβληματάκι..

Θέλω να πάρω δεδομενα από ένα αρχείο και να καταχωρώ σε ένα πίνακα..

Από ότι διάβασα είναι κάπως έτσι:

 

[ATTACH]12193[/ATTACH]

 

το έκανα αυτό αλλά μου εμφανίζει λάθος στη 2η γραμμή στο END.

Αν ξέρει κανείς...ας με βοηθήσει.:o

Ευχαριστώ πολύ!!!:-)

 

Δεν ξέρω να σου απαντήσω επακριβώς αλλά ρίξε μια ματιά στα παρακάτω.

 

http://www.gnu.org/software/gawk/manual/gawk.html

http://www.gnu.org/manual/gawk/gawk.html

http://dmst.aueb.gr/dds/os1lab/awk/index.htm

 

Μια αλλη ερωτιση..

Μπορω να βαλω μεσα στα window kai to linux και οποτε θελω το ανοιγω....

Πως μπορω να το κανω αυτο

 

Μπορέις. Υπάρχει το CygWin και διάφορα virtual machines όπως το VirtualBox και το VmWare.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ευχαριστώ χωρίς τα { } δουλεύει.

Απλά αδικα παιδευόμουν, ρώτησα τον καθηγητή και μου είπε να μην το κάνω με πίνακα γιατί είναι πιο δύσκολο και να το κανώ με την awk που θα διαβαζει το αρχειο γραμμη γραμμη. Αν μπορει καποιος να βοηθήσει γιατι εχω καταμπερδευτεί.

 

Το πρόγραμμα είναι το εξής:

 

Κατασκευή ενός προγράμματος σεναρίου κελύφους, που θα

υλοποιεί μια απλή εφαρμογή «Φύλλου Εργασίας» (Spreadsheet). Το πρόγραμμα θα έχει την

δυνατότητα καταχώρησης σε ένα πίνακα 20 γραμμών και 8 στηλών, αριθμών αλλά και

πράξεων. Σε κάθε κελί θα μπορεί να υπάρχει είτε αριθμός είτε πράξη της μορφής:

Αριθμός1 <πράξη> Αριθμός2

Στη θέση της πράξης μπορούν να είναι τα σύμβολα +, -, *, /, %

Στη θέση των αριθμών 1 και 2 μπορεί να είναι είτε νούμερο σε δεκαδική μορφή (xx.xxx) είτε

αναφορά σε άλλο κελί με γράμμα στήλης και αριθμό γραμμής (π.χ. Α1, Β2, Γ3, Ε8 κ.λ.π.)

Παράδειγμα περιεχομένου κελιών : Α1+1, Β2-Γ2, Ε3*Ε3, Δ4/2.9

Σε κάθε αλλαγή οποιουδήποτε κελιού θα επαν-υπολογίζεται ολόκληρο το φύλλο εργασίας.

Τέλος η εφαρμογή θα έχει τη δυνατότητα να αποθηκεύει τα φύλλα εργασίας σε αρχείο

κειμένου όπως και να τα φορτώνει από αρχείο κειμένου.

 

Αν μπορει καποιος να μου πει την λογική.

Πως θα κανω αντιστοίχηση των γραμμάτων Α1,Α2,Β1.... στα κελιά;

θα διαβαζω με την awk το αρχείο γραμμή γραμμή και θα παρω 20 περιπτώσεις για κάθε γραμμή;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν μπορει καποιος να μου πει την λογική.

Πως θα κανω αντιστοίχηση των γραμμάτων Α1,Α2,Β1.... στα κελιά;

θα διαβαζω με την awk το αρχείο γραμμή γραμμή και θα παρω 20 περιπτώσεις για κάθε γραμμή;

 

τι ακριβώς δεν καταλαβαίνεις ;

 

πως θα εισάγεις δεδομένα;

πως θα κάνεις open-save;

πως θα αντιστοιχήσεις τα δεδομένα των κελιών με τις εγγραφές;

.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κυρίως πως θα κάνω αντιστοίχηση των δεδομένων με τις εγγραφές.

Αν χρησιμοποιήσω την συνάρτηση sub(ere,repl,in) που κάνει αντικατάσταση στο string in την κανονικη εκφραση ere με το repl;

Α και κατι άλλο αν το κελί πχ περιεχει <αριθμο><πραξη><αριθμο> θα πρεπει να τα διαχωρισω για να τα ελεγξω;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

είμαι άσχετος !:o

 

http://www.hmug.org/man/1/AWK.php

http://sparky.rice.edu/~hartigan/awk.html

http://www.faqs.org/faqs/computer-lang/awk/faq/

http://www.bolthole.com/AWK.html

http://www.bolthole.com/awk5.html

 

αν κάθε εγγραφή στο αρχείο αντιστοιχεί με μιά σειρά του πίνακα

πρέπει να αντιστοιχήσεις τα 8 δεδομένα σε κάποιες μεταβλητές

 

ύστερα τα χειρίζεσαι ανάλογα

Α και κατι άλλο αν το κελί πχ περιεχει <αριθμο><πραξη><αριθμο> θα πρεπει να τα διαχωρισω για να τα ελεγξω;

 

 

αλλά άν έχεις Α3+Β7 ; μάλλον κάποιο έλεγχο πρέπει να κάνεις για να αντικαθιστάς με το περιεχόμενο των κελιών πριν κάνεις την πράξη***

 

 

υπομονή, σε λίγο θα φανούν οι ειδικοί !

Awk is an powerful command language that allows the user to manipulate files containing columns of data and strings. Awk is extremely useful, both for general operation of Unix commands, and for data reduction (e.g. IRAF). You might also learn how to use the stream editor sed. Many applications of awk resemble those done on PC spreadsheets.

 

καλή επιτυχία

.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

***

ίσως να μην χρειάζεται

 

http://unixhelp.ed.ac.uk/CGI/man-cgi?awk

The type of an expression is determined by its context and automatic

type conversion occurs if needed. For example, to evaluate the state-

ments

 

y = x + 2 ; z = x "hello"

 

The value stored in variable y will be typed numeric. If x is not

numeric, the value read from x is converted to numeric before it is

added to 2 and stored in y. The value stored in variable z will be

typed string, and the value of x will be converted to string if neces-

sary and concatenated with "hello". (Of course, the value and type

stored in x is not changed by any conversions.) A string expression is

converted to numeric using its longest numeric prefix as with atof(3).

A numeric expression is converted to string by replacing expr with

sprintf(CONVFMT, expr), unless expr can be represented on the host

machine as an exact integer then it is converted to sprintf("%d",

expr). Sprintf() is an AWK built-in that duplicates the functionality

of sprintf(3), and CONVFMT is a built-in variable used for internal

conversion from number to string and initialized to "%.6g". Explicit

type conversions can be forced, expr "" is string and expr+0 is

numeric.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τώρα δεν προλαβαίνω, θα επανέλθω αργότερα να βοηθήσω. Μια ερώτηση μόνο. Γιατί σε awk? Αν δεν λέει η εργασία για shell script αποκλειστικά, δεν μπορείς να διαλέξεις οποιαδήποτε άλλη scripting γλώσσα? Π.χ. perl (ναι, το ξέρω έχω μια αδυναμία...)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Λέει πρόγραμμα σεναρίου κέλυφους και δεν έχουμε κάνει perl οπότε καλύτερα με την awk.

Πως μπορώ να κάνω η εγγραφή ενός πεδίου δηλαδή το κελί του πίνακα να αναγνωριζει την μορφή <αριθμός><πραξη><αριθμός>

 

έχω γράψει αυτό:

a.txt

 

αλλά αυτό βγάζει λάθος αν έχουμε κάτι εκτός από αριθμό.

Για να φτίαξω την παραπάνω μορφή (αριθμος,πραξη,αριθμος) πρέπει να χώρίσω το κάθε πεδίο;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Απλώς το $1 αντιστοιχεί στο πρώτο πεδίο της γραμμής.

Γενικά η awk αναθέτει τα διακεκριμενα πεδια της γραμμής(στήλες) στις μεταβλητές $1,$2,$3....$n.Επίσης ολόκληρη η γραμμή που επεξεργάζεται η awk ανατίθεται στη μεταβλητή $0.Οπότε με αυτό που έγραψα ελεγχω αν όλο το πεδίο είναι αριθμός αλλά σε ένα πεδίο μπορεί να περιέχει αριθμό,πράξη ,αριθμό.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

η μεταβλητή (πεδίο) θα είναι

ή αριθμός

ή παράσταση

 

η παράσταση θα είναι

ή μιά πράξη με αριθμούς

ή μια πράξη με μεταβλητές (πχ Α1+3)

όπου Α1 το περιεχόμενο του κελιού

 

αν κατάλαβα καλά η awk καταλαβαίνει το είδος της μεταβλητής και το ερμηνεύει κατάλληλα, αντικαθιστώντας τις μεταβλητές με την τιμή τους όπου χρειάζεται

άρα αν αναθέσεις την παράσταση σε μιά μεταβλητή όταν ζητάς την μεταβλητή θα παίρνεις την τιμή της παράστασης

 

θα έλεγα να

γράψεις λίγο περισσότερο κώδικα και σκεπτικό, για να καταλάβουν το πρόβλημα σου

περιέχει αριθμό,πράξη ,αριθμό.

αν η $1 είναι 32+10 και ζητήσεις να τυπωθεί δεν βγάζει 42 ?

 

.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

αν η $1 είναι 32+10 και ζητήσεις να τυπωθεί δεν βγάζει 42 ?

ναι μπορείς να το κάνεις αυτό.

Από κώδικα έχω γράψει κάτι δοκιμαστικά αλλά δεν δουλεύει.

dokimi.txt

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

κάνουμε το πρόβλημά μας μικρά κομμάτια και τα ελέγχουμε ένα ένα

 

χθές ήμουν άσχετος, σήμερα έμαθα κατι !:-D

 

κάνε ένα αρχείο calctemp2 που θα έχει αριθμό σύμβολο αριθμό

σε μιά σειρα

 

τρέχε το dokimi3.txt και βλέπε το αποτέλεσμα άν είναι αυτό που θέλεις

 

το dik1.txt γράφει σε αρχείο την είσοδο που δέχεται

 

είχες μάλλον λάθος την χρήση $1 $2 κλπ

όταν γράφεις $a το awk ψάχνει το πεδίο στη θέση a και όχι την μεταβλητή a

πρέπει να το γράφεις αλλιώς

γιαυτό άλλαξα όλες τις μεταβλητές

 

τα if έτσι δουλεύουν (μάλλον)

 

διάβασα τις παρακάτω σελίδες

http://www.grymoire.com/Unix/Awk.html#uh-1'>http://www.grymoire.com/Unix/Awk.html#uh-1

http://foss.ntua.gr/wiki/index.php/%CE%A0%CE%B1%CF%81%CE%BF%CF%85%CF%83%CE%AF%CE%B1%CF%83%CE%B7_bash/sed/awk

http://www.grymoire.com/Unix/Awk.html

 

δεν είμαι προγραμματιστής, οπότε τα ξανασκέφτεσαι όλα αυτά !

.

άν κάνεις τα ERROR ERRO1 ERRO2 ERRO3 θα βλέπεις αν δουλεύουν τα if

νομίζω εχουν πρόβλημα ετσι που τα απλοποίησα.

.

dokimi3.txt

dok1.txt

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...