Work12 REMARKS script le lab10 ask1-5 tabbing, ls2, urlparse, times, dates_correct #Username : imanousi #lename : tabbing.imanousi #To script eisagei ena tab sthn arxh kathe grammhs #tou arxeiou pou dinetai ws parametros if [ $# -eq 0 ]; then echo "$0: Den exete dwsei orismata." 1>&2 if [! -f "$i" ]; then echo -n "$0: To $i den einai aplo arxeio" 1>&2 ne sed 's/^/\t/' "$i" ne # για κάθε αρχείο, που δίνεται παραμετρικά, αλλάζω την αρχή της γραμμής με tab (\t) #Username : imanousi #lename : ls2.imanousi #To script kanei 'ls -l' ston trexonta fakelo kai emfanizei ta stoixeia twn arxeiwn #me taksinomimena ta megethi tous xwris na emfanizei ta dikaiwmata. ls -l sed '1d' tr -s " " cut -d " " -f 2- sort -nk 4 ή και αντικαθιστώντας την 1 η στήλη με το τίποτα ls -l sed '1d' sed -r 's/^[^ ]+ //'... σβύνει την 1 η γραμμή,μπορει να μπεί και ls -l egrep -v '^total'
#Username : imanousi #lename : urlparse.imanousi #To script elegxei an to periexomeno enos arxeiou einai URL diefthinseis #kai emfanizei ta hostnames if [ $# -ne 1 ]; then echo "$0: Xreiazetai mia parametros." 1>&2 if [! -f "$1" ]; then echo "$0: H Parametros pou dwsate den einai arxeio." 1>&2 link="http:" while read a htt=`echo "$a" tr -s "/" cut -d "/" -f1` host=` echo "$a" tr -s "/" cut -d "/" -f2` if [ "$htt" = "$link" ]; then echo "$host" else echo "Not a URL" ne < "$1" Σωστά διαβάζεις ΑΛΛΑ που είναι η μεταβλητή $a, που αντιστοιχεί σε μια γραμμή από το αρχείο??? Το cut,egrep, sed επενεργούν σε ένα αρχείο. Αυτή η άσκηση δεν ζητά έλεγχο αν είναι ή δεν είναι URL? Απλά τους 2 πρώτους ελέγχους που έκανες μόνο ήθελε Και μετά να εμφανίσεις μια στήλη αρχείου: cat "$1" tr -s "/" cut -d "/" -f2 Διαβάζουμε ένα αρχείο αν από κάθε γραμμή π.χ. http://www.it.teithe.gr/kerveros/~diplomat/index.html παίρνω ένα στοιχείο και κάνω κάτι με αυτό, όπως έκανες εσύ για να τσεκάρεις αν είναι URL. ή π.χ παίρνω το kerveros και το ψάχνω σε ένα άλλο αρχείο, ή κάνω κάτι άλλο με αυτό. Οι μόνες εργαστηριακές ασκήσεις που απαιτούν ανάγνωση αρχείου είναι: 9 ο Εργαστήριο Ασκηση 4 11 ο Εργαστήριο Ασκηση 3 Οnline 3 Aσκηση 1( με set), Ασκηση2
#Username : imanousi #lename : dates_correct.imanousi #To script dexetai 2 orismata apo ta opoia to prwto periexei ta demena (π.χ. log.sql) #kai to deftero ta demena tropopoihmena (π.χ. log_corrected.sql) if [ "$#" -ne 2 ]; then echo "$0: Prepei na eisagete 2 orismata" 1>&2 while read a cat "$1" sed -r 's/([0-9]+)-([0-9]+)-([0-9]+)/\3-\1-\2/' >>"$2" ne < "$1" #! /bin/bash #lrigouts #tabbing.lrigouts #tha dexetai aperioristes parametrous #orismaτα = onomaτα arxeiων #elegxei: # 1. ypar3h arxeiwn # 2. emfanizei periexomena arxeiwn, prosthetontas sthn arxh tis grammhs ton xaraktira tab if test $# -eq 0 ; then echo "$0: Parakalo eisagete toulaxiston 1 orisma " 1>&2 if test! -f "$i" ; then echo " To $i den einai aplo arxeio " 1>&2
ne ne sed -r 's/^/\t/' "$i" #! /bin/bash #lrigouts #ls2.lrigouts #tha kanei ls -l afairontas thn sthlh me ta dikaiomata #tha ta3inomei ta arxeia me bash to megethos tous ls -l tr -s ' ' egrep -v "^total" cut -d' ' -f2,3,4,5,6,7,8,9 sort -n -k4 #ή και 2-9 ή και 2- #Μόνο που χαλάει, λίγο την μορφοποίηση, ενώ με sed (αντικαθιστώ την 1 η στήλη με τιποτα) δεν χαλαει, #αλλά σωστό είναι #Γενικά βάζω tr -s '' cut -d' ' -f9 όταν θελω μονο μια στήλη π.χ. την 2 μόνο. #! /bin/bash #lrigouts #times.lrigouts #tha kanei ls -l #apo tin e3o tis tha krataei: # 1.mono tis grammes pou periexoun ora (grep) # 2.tha kanei antistro tis oras ( prota ta lepta kai meta tin ora ( sed) #ζητά μονο την ώρα, αντίστροφα \2:\1, όχι τα άλλα πεδία. Bγαλε και την 1 η γρ. ls -l egrep -v '^total ' ls -l tr -s ' ' cut -d' ' -f8 egrep --color "([[:digit:]]{2}):([[:digit:]]{2})" sed -r 's/([[:digit:]]{2}):([[:digit:]]{2})/\2:\1/'
#! /bin/bash #lrigouts- dates_correct #tha dexetai 2 orismata #1o: to arxeio me ta demena #2o: to arxeio pou tha dhmiourgisoume #elegxos an yparxoun orismata #elegxos an yparxei to arxeio #elegxos an yparxei to arxeio pou theloume na sosoume ta apotelesmata if test $# -ne 2 ; then echo " parakalo ste akribos 2 orismata!! " 1>&2 le="$1" if test -e $le ; then echo "$le exists " #ευτυχώς, να τσεκάρεις με το το -f για τα αρχεία και -d φακέλους neo="$2" if test -e $neo ; then echo " to arxeio pou thelete na dimiourgisete yparxei idi" 1>&2 cat $le sed -r 's/(..)-(..)-(...)/\3-\1-\2/' > $neo #lename:tabbing.ckaripia if [ $# -eq 0 ];then echo "$0:den exete dwsei orismata." >&2 if [! -f "$i" ];then
echo -n "$0: to $i den einai aplo arxeio " >&2 ne sed 's/^/\t/' "$i" ne #lename:ls2.ckaripia ls -l sed '1d' cut -d " " -f2- sort -nk 4 NAI KΑΛΟ!! #lename:url.ckaripia if [ $# -ne 1 ];then echo "dwse akrivws 1 orisma" >&2 cat "$1" cut -d'/' -f3 #lename:times.ckaripia ls - l egrep '[0-9][0-9]:[0-9][0-9]' sed '1d' sed -r ' /[A-Z]*/d' sed -r 's/([0-9][0-9]):([0-9][0-9])/\2:\1/' δεν σου κάνει αυτό το pattern /[A-Z]*/ - ΣΤΑ ΣΒΎΝΕΙ όλα!
για να το δεις δώσε, ls l egrep '[A-Z]* ' --color #lename:dates_correct.ckaripia if [ $# -ne 2 ];then echo "dwse 2 krivws par." >&2 if [! -f "$1" ];then echo "to $1 arxeio den uparxei" >&2 if [ -f "$2" ];then echo "to arxeio $2 p 8elete na dhmiourgeisete uparxei" >&2 exit 3 else cat "$1" sed -r 's/([0-9]{2})-([0-9]{2})-([0-9]{4})/\3-\1-\2/' >> "$2" #ScriptFileName:$0 #Ergasia12 #Lab10Askisi1 -tabbing #vkiosses if [ "$#" -eq 0 ] then echo "Den ebales orisma" 1>&2 if [! -f "$1" ] #giati den trexei ean balo "$#"? Τι να ρωτήσεις με το $# < ο αριθμός των παραμέτρων
then echo "Den einai arxeio" 1>&2 if [-s"$1"] # to idio kai e.ean balo parapano orismata den tha ta emfanizei then #ναι, γιατι την εντολή sed, την κάνει αν το 1 ο ορισμα είναι αρχείο με μέγεθος sed 's/^/\t/' "$1" # για πολλά αρχεία κάτι άλλο θέλει π.χ. for #ScriptFileName:$0 ls2 #vkiosses #Ergasia12 #Lab10Askisi2 ls -l sed 's/^[^ ]* //' sort -k 4 n #vkiosses #ScripFileName:$0-times #Ergasia12 #Lab10Askisi4 ls -l egrep --color '[[:digit:]]{2}:[[:digit:]]{2}' tr -s " " cut -d " " -f 8 sed -r 's/([[:digit:]]{2}):([[:digit:]]{2})/\2:\1/' #vkiosses #ScriptFileName dates_correct #Ergasia12 #Lab10Askisi5 if [ "$#" -ne 2 ] then echo "Den ebales 2 orismata" 1>&2 Tρεχει Εχειs το αρχείο log.sql? Aν όχι cp ~vassik/work/log.sql. Kαι την τρεχεις έτσι: 1 η 2 η παρ/τρος./dates_correct.vkiosses log.sql logc Τοτε φτιάχνεις ένα αρχειο με όνομα logc Που εχει την ημ/νια αντί 1 2 3 05-23-2012 2012-05-23 Κάνε cat τα δυο αρχεία να τα δεις.
cat "$1" sed -r 's/([0-9]+)-([0-9]+)-([0-9]+)/\3-\1-\2/' >"$2" #Den trexei.den tin katalaba