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

Σχετικά έγγραφα
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

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

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

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

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

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Εισαγωγή στον Προγραμματισμό

Μεθόδων Επίλυσης Προβλημάτων

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

2.1. Εντολές Σχόλια Τύποι Δεδομένων

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

Εισαγωγή στον Προγραμματισμό

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

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

Shell Scripts: loops / if / test

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

9. Εντολές επανάληψηςκαι η εντολή

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

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

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

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

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ΚΑΙ Β ) ΤΡΙΤΗ 13 ΙΟΥΝΙΟΥ 2017

Θέματα Προγραμματισμού Διαδικτύου ~ PHP ~

Εισαγωγή στον Προγραμματισμό Python Μάθημα 3: πίνακες και βρόγχος επανάληψης for (για) Νοέμβριος 2014 Χ. Αλεξανδράκη, Γ.

Κεφάλαιο : Επαναλήψεις (o βρόγχος While) (Διάλεξη 9) Δομές Έλεγχου Προγράμματος

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL

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

Γλώσσα Προγραμματισμού C

Εισαγωγή στην PHP. ΕΣΔ 232 Διαχείριση Δεδομένων στη Κοινωνία της Πληροφορίας. Περιεχόμενα. Περιεχόμενα

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΩΝ & Δ ΤΑΞΗΣ ΕΣΠΕΡΙΝΩΝ

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

Προγραμματισμός HY: Γλώσσα Προγραμματισμού C

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

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

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

Γνωρίστε το Excel 2007

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

α. Οι συμβολοσειρές είναι μια ακολουθία από χαρακτήρες. Μια συμβολοσειρά μπορεί να αποτελείται από περισσότερες από μία λέξεις.

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

*? [xyz] [^xy] [!0-9] [:alpha:] [:digit:]

είκτες και Πίνακες (2)

Γ ε ν ι κ ό Λ ύ κ ε ι ο Ε λ ε υ θ ε ρ ο ύ π ο λ η ς. Α λ γ ό ρ ι θ μ ο ι

Μονοδιάστατοι πίνακες Πολυδιάστατοι πίνακες Μέθοδοι Μέθοδοι Recursive Overloading

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1

Μεθόδων Επίλυσης Προβλημάτων

Διάλεξη 5η: Εντολές Επανάληψης

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

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Παραδείγματα Χρήσης του DrJava

Εργαστήριο 10 Πίνακες. Πίνακες. Η έννοια της δόμησης δεδομένων στη PASCAL. Σκοπός

Προγραμματισμός Ι (ΗΥ120)

Topic 2: Bash Shell Programming * K24: Systems Programming Instructor: Mema Roussopoulou

Μεθόδων Επίλυσης Προβλημάτων

Συµβολοσειρές - Strings

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Εισαγωγή στην γλώσσα προγραμματισμού C

Εργαστήριο Λειτουργικών Συστημάτων. Shell Programming

Εισαγωγή στον Προγραμματισμό

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

Βαθμός Σχόλια. lab6 PASS PASS. - Πολύ καλή δουλειά, αλλά προσπάθησε να κάνεις την άσκηση χρησιµοποιώντας συναρτήσεις από το string.

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Κεφ 2. Βασικές Έννοιες Αλγορίθμων

4. Επιλογή και Επανάληψη

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

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

Δομή Επανάληψης. Κεφάλαιο 7 Mike Trimos

Εισαγωγή στον Προγραμματισμό Python Μάθημα 1: Μεταβλητές, τελεστές, είσοδος/έξοδος προγράμματος, συνθήκη ελέγχου if Νοέμβριος 2014 Χ. Αλεξανδράκη, Γ.

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ-ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΚΑΔΗΜΑΪΚΟ ΕΠΑΛ- ΚΑΝΙΓΓΟΣ 13- ΤΗΛ

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Επαναληπτικές Ασκήσεις

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

Κεφάλαιο : Επαναλήψεις (oι βρόχος While) ( ιάλεξη 9) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Η γλώσσα προγραμματισμού C

ΦΥΛΛΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ 1

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

ΕΙ ΑΓΩΓΉ ΣΗΝ FORTRAN

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

A2. Να γράψετε για κάθε περίπτωση τον αριθμό της πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

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

Γλώσσες Προγραμματισμού

Transcript:

Εργαστήριο 6 Ασκήσεις: To Εργαλείo Ωφελιμότητας Awk Προγραμματισμός Κελύφους Bash 1) Τυπώστε όλες τις γραμμές του αρχείου myle για τις οποίες το πρώτο πεδίο είναι διαφορετικό του πρώτου πεδίου της προηγούμενης. $ awk '$1!= prev { print; prev = $1 }' myle 2) Τυπώστε το συνολικό μέγεθος των αρχείων σε MBs που βρίσκονται στον τρέχον φάκελο και έχουν αλλαχτεί κατά το μήνα Νοέμβριο. $ ls -l awk '$6 == "Nov" { sum += $5 } END { print sum/1000000 " Mb" } Χωρίς να συμπεριλάβεις καταλόγους: $ ls -l grep ^- awk '$6 == "Nov" { sum += $5 } END { print sum/1000000 " Mb"}' ls -l sed -n '/^[^d]/p' awk '$6 == "Nov" { sum += $5 } END { print sum/1000000 " Mb"}' 3) Τυπώστε και ταξινομήστε με αντίστροφη αλφαβητική σειρά όλα τα login names (πρώτη στήλη) που βρίσκονται στο αρχείο /etc/passwd. $ awk -F ":" '{ print $1 }' /etc/passwd sort r $ awk -F ":" '{ print $1 "sort -r" }' /etc/passwd 4) Δεδομένου ενός αρχείου με τρείς στήλες, γράψετε ένα script το οποίο προσθέτει τις στήλες κάθε γραμμής και υπολογίζει το άθροισμά τους. Στην πρώτη γραμμή εξόδου θα πρέπει να εμφανίζεται η φράση "Print Totals" και στην τελευταία η "End Totals". Το αποτέλεσμα πρέπει να φαίνεται ως μαθηματικές πράξεις, δηλαδή στήλη1 + στήλη2 + στήλη3 = αποτέλεσμα. $ BEGIN {print "Print Totals"} {total = $1 + $2 + $3} {print $1 " + " $2 " + " $3 " = "total} END {print "End Totals"} ή

5) Τυπώστε κάθε πεδίο κάθε γραμμής του αρχείου lename σε ξεχωριστή γραμμή. $ awk '{for(i=1;i<=nf;i++) print $i }' lename 6) Τυπώστε τα πεδία της κάθε γραμμης του αρχείου myle σε αντίστροφη σειρά. $ awk '{ for (i = NF; i > 0; --i) printf( %s,$i); printf( \n )}' myle 7) Δεδομένου του αρχείου lename το οποίο περιέχει λιγότερες από 200 γραμμές κειμένου, εκτυπώστε τις γραμμές του lename σε αντίστροφη σειρά. awk ' { line[nr] = $0 } END { for ( i = NR; i > 0; i--) print line[i] } ' lename awk '{ line[i++]=$0} END {for (j=i-1; j>=0;) print line [j--] }' lename ή 8) Να γραφεί μια απλή υπολογιστική μηχανή (έστω ονομάζεται math) στο κέλυφος Bash, η οποία να υποστηρίζει απλές αριθμητικές πράξεις (πρόσθεση, αφαίρεση, πολλαπλασιασμό, διαίρεση και υπόλοιπο) μεταξύ δύο ακεραίων.! /bin/bash Usage: math n1 op n2 case $2 in +) echo "Addition requested." echo "$1 + $3 = $(( $1+$3 )) " ;; -) echo "Subtraction requested." echo "$1 - $3 = $(( $1-$3 )) ";; \*) echo "Multiplication requested." echo "$1 * $3 = $(( $1*$3 )) " ;; /) echo "Division requested." echo "$1 / $3 = expr $1 / $3 " ;; %) echo "Modulo arithmetic requested." echo "$1 % $3 = $(( $1%$3 )) ";; *) echo "Unknown operation specied." ;; esac

9) Εξηγήστε τι κάνει το πιο κάτω πρόγραμμα του κελύφους Bash.! /bin/bash cur_date=`date +%d%m%y` last_date="" if [ -s $HOME/.date ]; then last_date=`cat $HOME/.date` echo "$cur_date" > $HOME/.date if [ "$last_date"!= "$cur_date" ]; then echo "Hello!! How are you today?" Το πιο πάνω πρόγραμμα Bash εκτυπώνει στην οθόνη κάποιο το μήνυμα "Hello!! How are you today?" μόνο την πρώτη φορά που εκτελείται κατά τη διάρκεια μίας ημέρας.

10) Να γραφεί ένα πρόγραμμα στο κέλυφος Bash, το οποίο αλλάζει όλα τα ονόματα αρχείων που περιέχουν κεφαλαία γράμματα, σε μικρά γράμματα.! /bin/bash Usage: rename for le in * lle=`echo $le tr A-Z a-z` lle=`echo $le tr '[:upper:]' '[:lower:] if [ $le!= $lle ]; then mv $le $lle

11) Να γραφεί ένα πρόγραμμα για το κέλυφος Bash (έστω ονομάζεται revstrs) που να αντιστρέφει δεδομένες συμβολοσειρές, καθώς επίσης να υπολογίζει και τα μήκη τους. Hint: Χρησιμοποιηστε τις ακολουθες εκφρασεις: length=`expr length string ` ή ${string} Επιστρέφει τo μήκος του string; `expr substr $string $position $length` Επιστρέφει length χαρακτήρες από το string ξεκινώντας από το position! /bin/bash Usage: revstrs [string1 [string2...]] for str strlen=`expr length $str` ${string} idx=$strlen while [ $idx -gt 0 ] Επέστρεψε 1 χαρακτήρα από το $str ξεκινώντας από το idx expr substr $string $position $length` echo -n "`expr substr $str $idx 1`" ((idx--)) echo " --> $strlen character(s)." Λύση με την χρήση πινάκων:!/bin/bash declare -a ARRAY for str strlen=${str} i=0 echo " $strlen character(s): " while [! $i -gt $strlen ] expr substr $string $position $length` ARRAY[$i]="`expr substr $str $i 1`" echo ${ARRAY[$i]} ((i++)) echo ${ARRAY[*]} Εκτύπωση όλων στοιχείων ARRAY