Advertisement
deadlykingdx

tool328123.sh

Jan 12th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 7.31 KB | None | 0 0
  1. #/bin/bash
  2.  
  3. if [ $# -eq 0 ]; then                              #Αν δεν έχει παραμέτρους τύπωσε ΑΜ
  4.         echo "1051328-1058123"
  5. elif  [ $# -eq 2 ] && [ "$1" == "-f" ]; then        #An uparxoun 2 parametroi kai i prwti einai i -f
  6.         filename=$2                                 #to onoma tou arxeiou einai i deuteri parametros
  7.         awk '/^[^#]/ {print $0}' $filename          #ektupwse to arxeio xwris tis grammes pou arxizoun me #
  8.         exit                                        #termatise to programa
  9.      
  10. else
  11.     num_pa="$#"                                      #Θέσε στο num_pa τον αριθμό των παραμέτρων
  12.     while [ "$1" != "" ]; do                         #Όσο υπάρχουν παράμετροι
  13.         if [ "$1" == '-f' ]; then                    #Αν υπάρχει η παράμετρος -f τότε
  14.             shift                                    #Κάνε shift στην επόμενη παράμετρο
  15.             filename=$1                              #Θέσε στη μεταβλητή filename το $1 δηλαδή το όνομα του file
  16.         fi
  17.        
  18.         if [ "$1" == '-id' ]; then                   #Αν υπάρχει η παράμετρος -id τότε
  19.             shift                                    #Κάνε shift στην επόμενη παράμετρο
  20.             id=$1                                    #Θέσε στη μεταβλητή id το $1
  21.         fi
  22.  
  23.         if [ "$1" == '--firstnames' ]; then          #Αν υπάρχει η παράμετρος --firstnames τότε
  24.             firstnames=$1                            #Θέσε στη μεταβλητή firstnames το $1
  25.         fi
  26.  
  27.         if [ "$1" == '--lastnames' ]; then           #Αν υπάρχει η παράμετρος --lastnames τότε
  28.             lastnames=$1                             #Θέσε στη μεταβλητή lastnames το $1
  29.         fi
  30.  
  31.         if [ "$1" == '--born-since' ]; then          #Αν υπάρχει η παράμετρος --born_since τότε
  32.             shift                                    #Κάνε shift στην επόμενη παράμετρο
  33.             born_since=$1                            #Θέσε στη μεταβλητή born_since το $1
  34.         fi
  35.  
  36.         if [ "$1" == '--born-until' ]; then          #Αν υπάρχει η παράμετρος --born_until τότε
  37.             shift                                    #Κάνε shift στην επόμενη παράμετρο
  38.             born_until=$1                            #Θέσε στη μεταβλητή born_until το $1
  39.         fi
  40.  
  41.         if [ "$1" == '--socialmedia' ]; then         #Αν υπάρχει η παράμετρος --socialmedia τότε
  42.             socialmedia=$1                           #Θέσε στη μεταβλητή socialmedia το $1
  43.         fi
  44.  
  45.         if [ "$1" == '--edit' ]; then                #Αν υπάρχει η παράμετρος --edit τότε
  46.             shift                                    #Κάνε shift στην επόμενη παράμετρο
  47.             id_edit=$1                               #Θέσε στη μεταβλητή id το $1
  48.             column=$2                                #Θέσε στη μεταβλητή column το $2
  49.             value=$3                                 #Θέσε στη μεταβλητή value το $3
  50.         fi
  51.  
  52.         shift                                        #Κάνε shift στην επόμενη παράμετρο
  53.     done
  54.  
  55.  
  56. #Αν το id δεν είναι κενό τότε τύπωσε τις στήλες lastName firstName birthday που έχουν στήλη id ίση με το δοσμένο id.
  57.     if [ "$id" != "" ]; then
  58.        awk -v id="$id" 'BEGIN {FS="|"} id == $1 {print $3, $2, $5}' $filename
  59.        exit
  60.     fi
  61.  
  62. #Αν υπάρχει ως παράμετρος το --firstnames τότε όταν η γραμμή δεν ξεκινάει από "#" εκτυπώνει τη στήλη firstName ταξινομημένη διακριτα
  63.     if [ "$firstnames" == "--firstnames" ]; then
  64.         awk 'BEGIN {FS="|"} /^[^#]/ {print $3}' $filename | sort -u
  65.         exit
  66.     fi
  67.  
  68. #Αν υπάρχει ως παράμετρος το --lastnames τότε όταν η γραμμή δεν ξεκινάει από "#" εκτυπώνει τη στήλη lastName ταξινομημένη διακριτα
  69.     if [ "$lastnames" == "--lastnames" ]; then
  70.         awk 'BEGIN {FS="|"} /^[^#]/ {print $2}' $filename | sort -u
  71.         exit
  72.     fi
  73.  
  74. #Αν το born_since δεν είναι κενό και το born_until είναι κενό τότε όταν η γραμμή δεν ξεκινάει από "#" και η στήλη birthday είναι μεγαλύτερη ή ίση από τη δοσμέμη ημερομινία εκτύπωσε όλη τη γραμμή.
  75.     if [ "$born_since" != "" -a "$born_until" == "" ]; then
  76.         awk -v born_since="$born_since" 'BEGIN {FS="|"} /^[^#]/ && $5 >= born_since {print $0}' $filename
  77.         exit
  78.     fi
  79.  
  80. #Αν το born_until δεν είναι κενό και το born_since είναι κενό τότε όταν η γραμμή δεν ξεκινάει από "#" και η στήλη birthday είναι μικρότερη ή ίση από τη δοσμέμη ημερομινία εκτύπωσε όλη τη γραμμή.
  81.     if [ "$born_until" != "" -a "$born_since" == "" ]; then
  82.         awk -v born_until="$born_until" 'BEGIN {FS="|"} /^[^#]/ && $5 <= born_until {print $0}' $filename
  83.         exit
  84.     fi
  85.  
  86. #Αν το born_since δεν είναι κενό και το born_until δεν είναι κενό τότε  η γραμμή δεν ξεκινάει από "#" και η στήλη birthday είναι μεγαλύτερη ή ίση από born_since και μικρότερη ή ίση από born_until εκτύπωσε όλη τη γραμμή.
  87.     if [ "$born_since" != "" -a "$born_until" != "" ]; then
  88.         awk -v born_since="$born_since" -v born_until="$born_until" 'BEGIN {FS="|"} /^[^#]/ && $5 >= born_since && $5 <= born_until {print $0}' $filename
  89.         exit
  90.     fi
  91.  
  92. #Αν το socialmedia δεν είναι κενό τότε βγάζει τους χαρακτήρες \r κάνει sort για να μετρήσει πόσες φορές εμφανίζεται το κάθε socialmedia και στο αποτέλεσμα αυτού αλλάζει τη στήλη 2 με τη στήλη 1 ώστε να εμφανίζονται πρώτα τα socialmedia και μετά το πλήθος εμφανίσεων.
  93.     if [ "$socialmedia" != "" ]; then
  94.         awk 'BEGIN{FS="|";} /^[^#]/ {print $9}' $filename | tr -d "\r"| sort | uniq -c | awk  ' {print $2,$1}'
  95.         exit
  96.     fi
  97.  
  98. #Αν το id_edit δεν έιναι κενό
  99.     if [ "$id_edit" != "" ]; then
  100.         id=$id_edit
  101. #Αν η δοσμένη στήλη είναι μεγαλύτερη από 8 ή μικρότερη από 2 τότε κάνε exit
  102.         if (( $column > 8 | $column < 2 )); then
  103.         exit
  104.         fi
  105. #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
  106.         awk -v id="$id" -v col="$column" -v val="$value" 'BEGIN{FS="|";OFS="|"} { $col = ($1== id ? val : $col) }1' $filename > tmp && mv tmp $filename
  107.         exit
  108.     fi
  109.     exit
  110. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement