Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #/bin/bash
- if [ $# -eq 0 ]; then #Αν δεν έχει παραμέτρους τύπωσε ΑΜ
- echo "1051328-1058123"
- elif [ $# -eq 2 ] && [ "$1" == "-f" ]; then #An uparxoun 2 parametroi kai i prwti einai i -f
- filename=$2 #to onoma tou arxeiou einai i deuteri parametros
- awk '/^[^#]/ {print $0}' $filename #ektupwse to arxeio xwris tis grammes pou arxizoun me #
- exit #termatise to programa
- else
- num_pa="$#" #Θέσε στο num_pa τον αριθμό των παραμέτρων
- while [ "$1" != "" ]; do #Όσο υπάρχουν παράμετροι
- if [ "$1" == '-f' ]; then #Αν υπάρχει η παράμετρος -f τότε
- shift #Κάνε shift στην επόμενη παράμετρο
- filename=$1 #Θέσε στη μεταβλητή filename το $1 δηλαδή το όνομα του file
- fi
- if [ "$1" == '-id' ]; then #Αν υπάρχει η παράμετρος -id τότε
- shift #Κάνε shift στην επόμενη παράμετρο
- id=$1 #Θέσε στη μεταβλητή id το $1
- fi
- if [ "$1" == '--firstnames' ]; then #Αν υπάρχει η παράμετρος --firstnames τότε
- firstnames=$1 #Θέσε στη μεταβλητή firstnames το $1
- fi
- if [ "$1" == '--lastnames' ]; then #Αν υπάρχει η παράμετρος --lastnames τότε
- lastnames=$1 #Θέσε στη μεταβλητή lastnames το $1
- fi
- if [ "$1" == '--born-since' ]; then #Αν υπάρχει η παράμετρος --born_since τότε
- shift #Κάνε shift στην επόμενη παράμετρο
- born_since=$1 #Θέσε στη μεταβλητή born_since το $1
- fi
- if [ "$1" == '--born-until' ]; then #Αν υπάρχει η παράμετρος --born_until τότε
- shift #Κάνε shift στην επόμενη παράμετρο
- born_until=$1 #Θέσε στη μεταβλητή born_until το $1
- fi
- if [ "$1" == '--socialmedia' ]; then #Αν υπάρχει η παράμετρος --socialmedia τότε
- socialmedia=$1 #Θέσε στη μεταβλητή socialmedia το $1
- fi
- if [ "$1" == '--edit' ]; then #Αν υπάρχει η παράμετρος --edit τότε
- shift #Κάνε shift στην επόμενη παράμετρο
- id_edit=$1 #Θέσε στη μεταβλητή id το $1
- column=$2 #Θέσε στη μεταβλητή column το $2
- value=$3 #Θέσε στη μεταβλητή value το $3
- fi
- shift #Κάνε shift στην επόμενη παράμετρο
- done
- #Αν το id δεν είναι κενό τότε τύπωσε τις στήλες lastName firstName birthday που έχουν στήλη id ίση με το δοσμένο id.
- if [ "$id" != "" ]; then
- awk -v id="$id" 'BEGIN {FS="|"} id == $1 {print $3, $2, $5}' $filename
- exit
- fi
- #Αν υπάρχει ως παράμετρος το --firstnames τότε όταν η γραμμή δεν ξεκινάει από "#" εκτυπώνει τη στήλη firstName ταξινομημένη διακριτα
- if [ "$firstnames" == "--firstnames" ]; then
- awk 'BEGIN {FS="|"} /^[^#]/ {print $3}' $filename | sort -u
- exit
- fi
- #Αν υπάρχει ως παράμετρος το --lastnames τότε όταν η γραμμή δεν ξεκινάει από "#" εκτυπώνει τη στήλη lastName ταξινομημένη διακριτα
- if [ "$lastnames" == "--lastnames" ]; then
- awk 'BEGIN {FS="|"} /^[^#]/ {print $2}' $filename | sort -u
- exit
- fi
- #Αν το born_since δεν είναι κενό και το born_until είναι κενό τότε όταν η γραμμή δεν ξεκινάει από "#" και η στήλη birthday είναι μεγαλύτερη ή ίση από τη δοσμέμη ημερομινία εκτύπωσε όλη τη γραμμή.
- if [ "$born_since" != "" -a "$born_until" == "" ]; then
- awk -v born_since="$born_since" 'BEGIN {FS="|"} /^[^#]/ && $5 >= born_since {print $0}' $filename
- exit
- fi
- #Αν το born_until δεν είναι κενό και το born_since είναι κενό τότε όταν η γραμμή δεν ξεκινάει από "#" και η στήλη birthday είναι μικρότερη ή ίση από τη δοσμέμη ημερομινία εκτύπωσε όλη τη γραμμή.
- if [ "$born_until" != "" -a "$born_since" == "" ]; then
- awk -v born_until="$born_until" 'BEGIN {FS="|"} /^[^#]/ && $5 <= born_until {print $0}' $filename
- exit
- fi
- #Αν το born_since δεν είναι κενό και το born_until δεν είναι κενό τότε η γραμμή δεν ξεκινάει από "#" και η στήλη birthday είναι μεγαλύτερη ή ίση από born_since και μικρότερη ή ίση από born_until εκτύπωσε όλη τη γραμμή.
- if [ "$born_since" != "" -a "$born_until" != "" ]; then
- awk -v born_since="$born_since" -v born_until="$born_until" 'BEGIN {FS="|"} /^[^#]/ && $5 >= born_since && $5 <= born_until {print $0}' $filename
- exit
- fi
- #Αν το socialmedia δεν είναι κενό τότε βγάζει τους χαρακτήρες \r κάνει sort για να μετρήσει πόσες φορές εμφανίζεται το κάθε socialmedia και στο αποτέλεσμα αυτού αλλάζει τη στήλη 2 με τη στήλη 1 ώστε να εμφανίζονται πρώτα τα socialmedia και μετά το πλήθος εμφανίσεων.
- if [ "$socialmedia" != "" ]; then
- awk 'BEGIN{FS="|";} /^[^#]/ {print $9}' $filename | tr -d "\r"| sort | uniq -c | awk ' {print $2,$1}'
- exit
- fi
- #Αν το id_edit δεν έιναι κενό
- if [ "$id_edit" != "" ]; then
- id=$id_edit
- #Αν η δοσμένη στήλη είναι μεγαλύτερη από 8 ή μικρότερη από 2 τότε κάνε exit
- if (( $column > 8 | $column < 2 )); then
- exit
- fi
- #An kapoia stili id einai isi me to id pou dothike grapse sti stili tou id ti timi pou dothike xrisimopiontas ena prosorino arxei tmp
- awk -v id="$id" -v col="$column" -v val="$value" 'BEGIN{FS="|";OFS="|"} { $col = ($1== id ? val : $col) }1' $filename > tmp && mv tmp $filename
- exit
- fi
- exit
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement