ΜΑΘΗΜΑ: ΕΙΑΓΩΓΗ ΣΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 10o ΕΡΓΑΣΤΗΡΙΟ

Σχετικά έγγραφα
ΜΑΘΗΜΑ: ΕΙΑΓΩΓΗ ΣΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 9o ΕΡΓΑΣΤΗΡΙΟ

Στο εργαστήριο θα μελετηθούν: Διδάσκων: Γιώργος Χατζηπολλάς. Εργαστήριο 2: Εργαλεία Συστήματος UNIX. Ομάδες για παρουσίαση

wc -l <file1 10 ή να μετρήσω πόσες γραμμές δίνει μια οποιαδήποτε άλλη εντολή π.χ. η finger : finger wc -l 8

Work12 REMARKS script file lab10 ask1-5 tabbing, ls2, urlparse, times, dates_correct

Εισαγωγή στα Λειτουργικά Συστήματα

Εισαγωγή στα Λειτουργικά Συστήματα

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον (Εργαστήριο 2)

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. UNIX Μέρος 2

Κανονικές εκφράσεις ή παραστάσεις (Regular Expressions) 3 ο Εργαστήριο ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - ΕΡΓΑΣΤΗΡΙΟ

Τυπικές χρήσεις της Matlab

ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Τμήμα Μηχανικών Πληροφορικής ΤΕ Λειτουργικά Συστήματα (Εργαστήριο) Διδάσκων: I. Τσακνάκης. 8ο Εργαστήριο

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Εργαστήριο 4: Εργαλεία Συστήματος UNIX. Διδάσκων: Γιώργος Χατζηπολλάς. Στο εργαστήριο θα μελετηθούν: Εργαστηριακή Άσκηση 2 Παραδείγματα χρήσης awk

Εργαστήριο 6 Ασκήσεις: To Εργαλείo Ωφελιμότητας Awk Προγραμματισμός Κελύφους Bash

(Regular Expressions) ΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ/ ΧΕΙΜ

ΤΕΙΘ ΣΤΕΦ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

Λειτουργικά Συστήματα

3ο Εργαστήριο Βασικές εντολές διαχείρισης αρχείων σε LINUX

Διάλεξη 7 Εργαλεία Ωφελιμότητας Unix: Αwk

Εισαγωγή στα Λειτουργικά Συστήματα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

8 FORTRAN 77/90/95/2003

Λειτουργικά Συστήματα - Εργαστήριο 6. 6ο Εργαστήριο. Συμπίεση αρχείων Χρήση ειδικών χαρακτήρων στην γραμμή εντολών. Χρήστες και Ομάδες Χρηστών

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

Αβδέλαρου Κωνσταντίνα

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης

ΟΛΑ ΤΑ SCRIPT files πρέπει να είναι ΕΚΤΕΛΕΣΙΜΑ: $*, : ΟΛΑ - Η λίστα (ο πίνακας) με τα ορίσματα $# πλήθος παραμέτρων. one two third parameter

Εισαγωγή στην Αριθμητική Ανάλυση

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

3 ο Εργαστήριο Μεταβλητές, Τελεστές

1 η Εργαστηριακή Άσκηση MATLAB Εισαγωγή

Μερικές άλλες χρήσιμες εντολές

Διάλεξη 6 Εργαλεία Ωφελιμότητας Unix: Sed

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς

Streams Input / Output in C++ George Kastrinis

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ / ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

Συστήματα Αναμονής (Queuing Systems)

Γενικά. Change Reference

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. Πρόοδος 28 Μαρτίου 2009 Οµάδα 1 η

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Προγραμματισμός Διαχείρισης Συστημάτων Ι

Εναλλακτικές εντολές για ανάγνωση/εγγραφή

ΤΕΙΘ ΣΤΕΦ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 3o ΕΡΓΑΣΤΗΡΙΟ

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Αλληλεπίδραση με το Matlab

Μερικές άλλες χρήσιμες εντολές

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

Διάλεξη 6 Εργαλεία Ωφελιμότητας Unix: Sed

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

[11] Υπολογιστικά συστήματα: Στρώματα. Περιεχόμενα. Εισαγωγή. επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό

Λειτουργικά Συστήματα

Λειτουργικά Συστήματα

ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Τµήµα Μηχανικών Πληροφορικής ΤΕ Λειτουργικά Συστήµατα (Εργαστήριο) Διδάσκων: I. Τσακνάκης. 7ο Εργαστήριο

ΑΣΚΗΣΕΙΣ Ακολουθίας. Πίνακας τιµών µεταβλητών Χ Α Β α β γ

Προγραμματισμός Διαχείρισης Συστημάτων Ι

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Εξετάσεις Προσομοίωσης 24/04/2019

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στο Λ.Σ. UNIX

Επιπλέον διδακτικό υλικό κρυφών μνημών: set-associative caches, πολιτικές αντικατάστασης, χειρισμός εγγραφών

ΚΕΦΑΛΑΙΟ 3. Εκφράσεις, τελεστές, σχόλια. 3.1 Εισαγωγή

ΤΕΙΘ ΣΤΕΦ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 6o ΕΡΓΑΣΤΗΡΙΟ

Λειτουργικά Συστήματα. Άσκηση Πράξη. Shell Programming

ΜΑΘΗΜΑΤΙΚΑ Α ΓΥΜΝΑΣΙΟΥ ΑΝΔΡΕΣΑΚΗΣ ΔΗΜΗΤΡΗΣ ΦΥΛΛΑ ΕΡΓΑΣΙΑΣ ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ ΕΝΟΤΗΤΑ Α.1.2. ΠΡΑΞΕΙΣ ΦΥΣΙΚΩΝ ΑΡΙΘΜΩΝ ΚΑΙ ΙΔΙΟΤΗΤΕΣ ΟΝΟΜΑΤΕΠΩΝΥΜΟ

Fixed Character strings

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο

Βασικές εντολές του Unix-Linux

Εισαγωγή Εγγραφών Κέντρων Κόστους

Λειτουργικό σύστημα Unix

ΕΓΧΕΙΡΙΔΙΟ ΛΕΙΤΟΥΡΓΙΩΝ

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον (Εργαστήριο 2)

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

ALERTS ή EDA (Event Driven Actions)

Βάσεις Δεδομένων 5η εργαστηριακή άσκηση

Λειτουργικά Συστήματα 5η εργαστηριακή άσκηση

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

Shell Scripts: loops / if / test

ΕΛΠ 605: Προχωρημένη Αρχιτεκτονική Υπολογιστών. Εργαστήριο Αρ. 1

ΣΕΙΘ ΣΕΥ - ΣΜΗΜΑ ΠΛΗΡΟΥΟΡΙΚΗ ΜΑΘΗΜΑ: ΕΙΑΓΩΓΗ ΣΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

ΝΕΕΣ ΔΥΝΑΤΟΤΗΤΕΣ-ΒΕΛΤΙΩΣΕΙΣ ΑΝΑΒΑΘΜΙΣΗΣ 2.59

Postgress ΣΤΟΧΟΣ ΣΧΕΤΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ ΥΛΙΚΟ. ΠΕΡΙΒΑΛΛΟΝ ΓΙΑ ΕΞΑΣΚΗΣΗ pgadmin ΥΠΟΒΑΘΡΟ. Συναρτήσεις στην PostgreSQL. 1. Γενικά

ΕΝΟΤΗΤΑ 5 ΚΕΦΑΛΑΙΟ 25. Δεκαδικά Κλάσματα - Δεκαδικοί Αριθμοί ΟΛΑ ΟΣΑ ΠΡΕΠΕΙ ΝΑ ΞΕΡΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ

Λειτουργικά Συστήματα. Shell Programming

ΦΙΛΤΡΑ KALMAN ΕΞΑΜΑΗΝΙΑΙΑ Β - ΕΠΕΞΗΓΗΣΕΙΣ

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. Πρόοδος 20 Μαρτίου 2011 Οµάδα

Εκφώνηση άσκησης. Η Κρεμάλα σαν παιχνίδι. Ανάλυση. Μέρος Α Αναφoρά, ανάλυση τακτικής. Υλοποίηση του παιχνιδιού «Κρεμάλα»

Transcript:

10o ΕΡΓΑΣΤΗΡΙΟ ΣΤΟΧΟΣ Φίλτρα και sed ΑΣΚΗΣΗ 1 Να γραφτεί πρόγραμμα σεναρίου κελύφους με όνομα tabbing. Σο πρόγραμμα σεναρίου κελύφους να δέχεται απεριόριστο πλήθος ορισμάτων. Σο κάθε όρισμα εκφράζει όνομα αρχείου. Να ελέγχει την ύπαρξη των αρχείων, και να εμφανίζει τα περιεχόμενα των αρχείων προσθέτοντας στην αρχή κάθε γραμμής τον χαρακτήρα tab. Η εντολή sed είναι εντολή φίλτρο. Διαβάζει την είσοδό της (ή από αρχείο αν οριστεί) και εφαρμόζει επάνω στην είσοδο τις εντολές που ορίζονται. ύνταξη: sed [OPTIONS] εντολή sed [FILES] H sed δέχεται διάφορες εντολές όπως: d delete lines p print lines s substitute (αντικατάσταση) Η εντολή της sed έχει την εξής μορφή: [Where] [command][/command args][/flags] [where]: που (σε ποιες γραμμές) θα εφαρμοστεί η εντολή [command]: ποια εντολή (d ή p ή s) [command args]/[flags] ανάλογα με την εντολή. Χρησιμεύουν στην εντολή s WHERE: Εκφράζεται Είτε με εύρος γραμμών, πχ: 3,8 (από την 3 η έως και την 8 η γραμμή) πχ: sed '3,8d ' /etc/passwd (θα εμφανίζει τα περιεχόμενα του αρχείου /etc/passwd χωρίς τις γραμμές 3-8) Είτε με αριθμό γραμμής πχ: 10 (στην 10 η γραμμή) πχ: sed '1d ' /etc/passwd (θα εμφανίζει τα περιεχόμενα του αρχείου /etc/passwd χωρίς την 1 η γραμμή)

υντομογραφία το $ - σημαίνει η τελευταία γραμμή. 5,$ (από την 5 η έως την τελευταία γραμμή) Είτε με μια κανονική έκφραση η οποία περιέχεται ανάμεσα σε / /, πχ: sed '/^[0-9]/d ' /etc/passwd (μην εμφανίζεις τις γραμμές που ξεκινούν με αριθμό) Είτε με 2 κανονικές εκφράσεις χωρισμένες με κόμμα, που σημαίνει από την γραμμή που θα βρεθεί η 1 η κανονική έκφραση μέχρι την γραμμή που θα βρεθεί η 2 η κανονική έκφραση. Πχ: sed '/^Α/,/Β$/d ' file (μην εμφανίζεις από την γραμμή που ξεκινά με Α μέχρι την γραμμή που τελειώνει σε Β. Είτε με τίποτα. Σότε εφαρμόζεται η εντολή σε ολόκληρο το αρχείο εισόδου. Εντολή substitute Χρειάζεται 2 ορίσματα. Σι θα αντικαταστήσει και με τι θα το αντικαταστήσει. Πχ: sed 's/asidirop/antonis/ ' όπου βρεθεί το string asidirop θα αντικατασταθεί με το antonis. ls l sed '2,$ s/studin/none/ ' την έξοδο της ls l, στις γραμμές από την 2 η μέχρι την τελευταία άλλαξε το studin σε none. Μόνο μια αντικατάσταση θα πραγματοποιηθεί ανά γραμμή. Εάν θέλουμε να γίνουν πολλές αντικαταστάσεις πρέπει να δοθεί το όρισμα /g στην substitute: ls l sed '2,$ s/studin/none/g' την έξοδο της ls l, στις γραμμές από την 2 η μέχρι την τελευταία άλλαξε το studin σε none όσες φορές και αν βρεθεί ανα γραμμή. ls l sed '2,$ s/[0-9]/x/ g' total 211508 drwxr-xr-x X asidirop asidirop XXXX XXXX-XX-XX XX:XX Adopse_video drwxr-xr-x X asidirop asidirop XXXX XXXX-XX-XX XX:XX aetos_data drwxr-xr-x X asidirop asidirop XXXX XXXX-XX-XX XX:XX aetosdb_data -rw-r--r-- X asidirop asidirop XXXX XXXX-XX-XX XX:XX alex.png την έξοδο της ls l, στις γραμμές από την 2 η μέχρι την τελευταία οποιοδήποτε αριθμητικό ψηφίο σε Χ. ls l sed -r '2,$ s/[0-9]+/x/ g' total 211508 drwxr-xr-x X asidirop asidirop X X-X-X X:X Adopse_videos drwxr-xr-x X asidirop asidirop X X-X-X X:X aetos_data drwxr-xr-x X asidirop asidirop X X-X-X X:X aetosdb_data -rw-r--r-- X asidirop asidirop X X-X-X X:X alex.png To r οδηγεί την sed να χρησιμοποιήσει το extended set κανονικών εκφράσεων ERE (και όχι το basic set - BRE) την έξοδο της ls l, στις γραμμές από την 2 η μέχρι την τελευταία, οποιονδήποτε συνδυασμό αριθμητικών ψηφίων σε Χ.

ΑΣΚΗΣΗ 2 Να γραφτεί πρόγραμμα σεναρίου κελύφους με όνομα ls2. Σο πρόγραμμα σεναρίου κελύφους να κάνει ls l στον τρέχον κατάλογο, αφαιρώντας όμως από το αποτέλεσμα την στήλη με τα δικαιώματα χρήσης. Επίσης να ταξινομεί τα αρχεία με βάση το μέγεθός τους. Έξοδος κανονικής ls -l: aetos_lib_29_$ls -l total 40 -rw-r--r-- 1 asidirop it 902 Dec 5 21:28 common.pl -rw-r--r-- 1 asidirop it 1651 Jun 7 2004 config.pl -rw-r--r-- 1 asidirop it 5518 Dec 6 20:45 db.pl -rw-r--r-- 1 asidirop it 3310 May 30 2004 layout.pl Έξοδος του προγράμματός μας: aetos_lib_30_$./ls2 total 40 1 asidirop it 902 Dec 5 21:28 common.pl 1 asidirop it 1651 Jun 7 2004 config.pl 1 asidirop it 3310 May 30 2004 layout.pl 1 asidirop it 5518 Dec 6 20:45 db.pl ΑΣΚΗΣΗ 3 Α. Να γραφτεί ένα σενάριο κελύφους με όνομα urlparse. Σο script αυτό να δέχεται ακριβώς ένα όρισμα. Σο όρισμα εκφράζει όνομα αρχείου το οποίο περιέχει URLs. Πχ file1: http://www.it.teithe.gr/kerveros/~diplomat/index.html http://www.deitel.com/~books.cgi/os3e/ http://www.parinux.org/pipermail/linux/2001june/016876.html http://cs.vt.labs.edu/~cs27_04/spring05/mcpherson/note/ch1.pdf http://www.cs.may.ie/~dtray/cs211/lecture1/intro04.htm http://www.csse.monash.edu.au/courseware/~cse 1303/parta/lecture/ http://www.amazon.com/exec/obidos/27/algorithms-on_trees.htm http://www.amazon.com/exec/obidos http://www.it.teithe.gr/~asidirop http://www.it.teithe.gr/index.html To script θα πρέπει να κάνει τους απαραίτητους ελέγχους σε σχέση με τα ορίσματα, και να εμφανίζει τα hostnames (bold) από το αρχείο. aetos_lib_30_$./parse_url file1 www.it.teithe.gr www.deitel.com www.parinux.org cs.vt.labs.edu www.cs.may.ie www.csse.monash.edu.au www.amazon.com

www.amazon.com www.it.teithe.gr www.it.teithe.gr Β. Δημιουργείστε το script url_parse2, το οποίο θα εμφανίζει τα μοναδικά hostnames και θα μετράει το πλήθος εμφανίσεων του καθενός. aetos_lib_30_$./parse_url2 file1 1 cs.vt.labs.edu 2 www.amazon.com 1 www.cs.may.ie 1 www.csse.monash.edu.au 1 www.deitel.com 3 www.it.teithe.gr 1 www.parinux.org την sed (όπως και στην grep) μπορούμε να κάνουμε back-reference με τις παρενθέσεις. Πχ: asidirop@dell:~$ who asidirop tty7 2012-05-25 11:56 (:0) asidirop pts/0 2012-05-25 12:06 (:0.0) asidirop pts/1 2012-05-25 12:48 (:0.0) asidirop@dell:~$ who sed -r 's/^([^ ]+)[ ]+([^ ]+)[ ]/\2 \1 /' tty7 asidirop 2012-05-25 11:56 (:0) pts/0 asidirop 2012-05-25 12:06 (:0.0) pts/1 asidirop 2012-05-25 12:48 (:0.0) Η παραπάνω κανονική έκφραση θα ταιριάξει στις 2 πρώτες στήλες της εξόδου της εντολής who. τον buffer \1, αποθηκεύουμε αυτό που ταίριαξε από την αρχή γραμμής μέχρι το πρώτο space. τον buffer \2 αποθηκευουμε αυτό που ταίριαξε από το space μέχρι το επόμενο space. Αντικαθιστούμε το τμήμα της γραμμής που ταίριαξε στην κανονική έκφραση με το «\2 \1». ΑΣΚΗΣΗ 4 Να γραφτεί πρόγραμμα σεναρίου κελύφους με όνομα times. Σο πρόγραμμα σεναρίου κελύφους θα κάνει ls l στον τρέχον κατάλογο, και από την έξοδο της ls θα κρατάει μόνο τις γραμμές που περιέχουν ώρα (πχ: 20:34) (με grep) από αυτές τις γραμμές θα κρατάει μόνο την στήλη που περιέχει την ώρα. (με sed) Έπειτα να κάνει αντιστροφή της ώρας και να εμφανίζει πρώτα τα λεπτά και μετά την ώρα. Πχ το 15:45 να γίνεται 45:15. (με sed)

ΑΣΚΗΣΗ 5 Έστω ότι δίνεται ένα αρχείο όπως παρακάτω (log.sql) το οποίο περιέχει sql εντολές (αν δεν γνωρίζετε τι είναι η sql δεν πειράζει). Σο αρχείο αυτό περιέχει ημερομηνίες στην μορφή ΜΗΝΑ-ΗΜΕΡΑ-ΕΣΟ. Θέλουμε να αλλάξουμε την μορφή των ημερομηνιών σε ΕΣΟ-ΜΗΝΑ-ΗΜΕΡΑ Φτιάξτε ένα σενάριο κελύφους με όνομα dates_correct το οποίο θα δέχεται 2 ορίσματα. Σο 1 ο όρισμα είναι το αρχείο με τα δεδομένα (πχ: log.sql). Σο 2 ο όρισμα είναι το αρχείο που θα δημιουργήσετε (πχ: log_corrected.sql) και θα περιέχει ότι και το 1 ο με τις ημερομηνίες τροποποιημένες. Να πραγματοποιήσετε τους απαραίτητους ελέγχους αν υπάρχουν τα ορίσματα, αν υπάρχει το αρχείο με τα δεδομένα αν υπάρχει το αρχείο στο οποίο θέλουμε να σώσουμε τα αποτελέσματα. Να αποθηκεύσετε στο αρχείο (2 ο όρισμα) το αποτέλεσμα. FILE: log.sql values('8036','i84kj83lvkcif90rhefn6om174','3763','113763','109.242.255.213','','05-23-2012'); values('8086','7norrq6hcfaqaq7kq0f7i0bko1','3668','103668','195.251.123.10','','05-23-2012'); values('8136','d9v48gt98m54f6rfr01sks2r72','3472','93472','79.103.159.2 26','','05-23-2012'); values('8186','rnpaamipvqvmpqs5prtr37ej77','3002','63002','46.177.210.2 04','','05-23-2012'); values('8236','sek60eaofudv2loejvavcbrq62','3708','113708','79.103.156. 188','','05-24-2012'); values('8286','69hmh48pk82v6e83mpe169suf5','3717','113717','195.251.240.62','192.168.9.14','05-24-2012'); values('8336','uilkvel5rrkpt5te66lo2gam71','3419','83419','195.251.123. 15','','05-24-2012'); values('8386','6qe2oara7kf3t9lt1pcntfurc5','3479','93479','195.251.123. 15','','05-24-2012'); values('8436','vjil0138h4j9gc047n1bi8nrn3','3785','113785','37.32.167.5 1','','05-24-2012'); Για το παπαπάνω παπάδειγμα το απχείο εξόδου θα ππέπει να πεπιέχει: values('8036','i84kj83lvkcif90rhefn6om174','3763','113763','109.242.255.213','','2012-05-23');

values('8086','7norrq6hcfaqaq7kq0f7i0bko1','3668','103668','195.251.123.10','','2012-05-23'); values('8136','d9v48gt98m54f6rfr01sks2r72','3472','93472','79.103.159.2 26','','2012-05-23'); values('8186','rnpaamipvqvmpqs5prtr37ej77','3002','63002','46.177.210.2 04','','2012-05-23'); values('8236','sek60eaofudv2loejvavcbrq62','3708','113708','79.103.156. 188','','2012-05-24'); values('8286','69hmh48pk82v6e83mpe169suf5','3717','113717','195.251.240.62','192.168.9.14','2012-05-24'); values('8336','uilkvel5rrkpt5te66lo2gam71','3419','83419','195.251.123. 15','','2012-05-24'); values('8386','6qe2oara7kf3t9lt1pcntfurc5','3479','93479','195.251.123. 15','','2012-05-24'); values('8436','vjil0138h4j9gc047n1bi8nrn3','3785','113785','37.32.167.5 1','','2012-05-24');