From 656f1a0eb18209176057e669e285088b2f5bf7b6 Mon Sep 17 00:00:00 2001 From: Jack-Benny Persson Date: Sat, 28 Dec 2013 13:14:33 +0100 Subject: [PATCH] Rearranged files in lab 8 and added a lab report and some examples --- Labb8/{testing_sedawk => }/file.txt | 0 Labb8/findconf.awk | 3 ++ Labb8/laborationsrapport.md | 52 ++++++++++++++++++++++++++-- Labb8/listbashusers.awk | 2 ++ Labb8/{testing_sedawk => }/names.txt | 0 Labb8/testing_sedawk/README.md | 4 --- Labb8/testing_sedawk/notes.md | 11 ------ Labb8/web.awk | 3 ++ 8 files changed, 58 insertions(+), 17 deletions(-) rename Labb8/{testing_sedawk => }/file.txt (100%) create mode 100644 Labb8/findconf.awk create mode 100644 Labb8/listbashusers.awk rename Labb8/{testing_sedawk => }/names.txt (100%) delete mode 100644 Labb8/testing_sedawk/README.md delete mode 100644 Labb8/testing_sedawk/notes.md create mode 100644 Labb8/web.awk diff --git a/Labb8/testing_sedawk/file.txt b/Labb8/file.txt similarity index 100% rename from Labb8/testing_sedawk/file.txt rename to Labb8/file.txt diff --git a/Labb8/findconf.awk b/Labb8/findconf.awk new file mode 100644 index 0000000..9c344ca --- /dev/null +++ b/Labb8/findconf.awk @@ -0,0 +1,3 @@ +BEGIN { print "I found the following conf files:\n" } +/^.*\.conf$/ { print $9 } # Changed < to ^ (what does < mean in this context?) +END { print "\nDone." } diff --git a/Labb8/laborationsrapport.md b/Labb8/laborationsrapport.md index 2358ef5..e93bb0d 100644 --- a/Labb8/laborationsrapport.md +++ b/Labb8/laborationsrapport.md @@ -32,10 +32,58 @@ gawk eller mawk. ### Reguljära uttryck ### #### BRE #### -BRE står för Basic Regular Expression +BRE står för Basic Regular Expression och innehåller bland annat följande +reguljära uttryck + +Symbol | Mening +------ | ------ +^ | Början av raden +$ | Slutet av raden +. | Ett och endast ett tecken +* | Valfritt antal gånger av tecknet +[] | Klass av tecken, t.ex. [ybh]ay matchar yay, hay, bay +[^] | Negativ klass av tecken, t.ex. [^yh]ay matchar INTE hay eller yay +[-] | En serie av tecken, t.ex. [0-9] matchar alla tecken mellan 0 och 9 #### ERE #### -ERE står för Extended Regular Expression +ERE står för Extended Regular Expression. Förutom ovanstående har ERE även +följande reguljära uttryck. + +Symbol | Mening +------ | ------ +? | Ingen eller en gång ++ | En eller flera gånger (minst en gång) +{} | Upprepa antal ggr, t.ex. b{3} matchar 3 st b +{,} | T.ex. {1,3} matchar minst en gång, men max 3 gånger +| | OR/ELLER, t.ex. cat|dog matchar cat eller dog +() | Gruppera uttryck, t.ex. ca(t|b) eller Hej(san) + +### Exempel och experiment med Sed & Awk ### +Dessa exempel använder filerna file.txt och name.txt som finns här i mappen +Mycket är taget från laborationsbeskrivningen och boken. +```bash +# Matchar Många/många/Långa/långa +sed -n '/^[MmLl]ånga/p' file.txt + +# Skriver Spock -- framför varje rad +sed 's/^/Spock -- /g' file.txt + +# Skriver ut fält 1, 3 och 3 +awk '{ print $1 $2 $3 }' names.txt + +# Skriver ut fält 1, 2 och 3 med mellanslag mellan fält ett och två och +# --> mellan 2 och 3 +awk '{ print $1" "$2" --> "$3 }' names.txt + +# Det egna ls-kommandot från laborationen, dock modifierat för att fungera +# då det 8:e fältet är tiden, inte filnamnet +ls -l | grep -v total | awk '{ print $9"\t är "$5" bytes stor" }' + +# Mer test från laborationsbeskrivningen +ls -l /etc/| awk 'BEGIN { print "Found:\n" } /^.*\.conf$/ { print $9 } END { print "\nDone" }' +``` +Fler exempel finns i denna mappen i form av bland annat en rad awk-skript. + ## Reflektion ## diff --git a/Labb8/listbashusers.awk b/Labb8/listbashusers.awk new file mode 100644 index 0000000..425bc76 --- /dev/null +++ b/Labb8/listbashusers.awk @@ -0,0 +1,2 @@ +BEGIN { FS=":"; OFS="\n"; print "The following users uses Bash" } +/\/bin\/bash/ { print $1 } diff --git a/Labb8/testing_sedawk/names.txt b/Labb8/names.txt similarity index 100% rename from Labb8/testing_sedawk/names.txt rename to Labb8/names.txt diff --git a/Labb8/testing_sedawk/README.md b/Labb8/testing_sedawk/README.md deleted file mode 100644 index d773865..0000000 --- a/Labb8/testing_sedawk/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Sed & Awk tests # -Most of these examples are from lab 8 and the book (chapter 18, Linux Command Line and -Shell Scripting Bible, 2nd edition). - diff --git a/Labb8/testing_sedawk/notes.md b/Labb8/testing_sedawk/notes.md deleted file mode 100644 index 355b3ff..0000000 --- a/Labb8/testing_sedawk/notes.md +++ /dev/null @@ -1,11 +0,0 @@ -# Misc notes on sed & awk # -```bash -sed -n '/^[MmLl]ånga/p' file.txt # Match Många/många/Långa/långa. -sed 's/^/Spock -- /g' file.txt # Put "Spock -- " in front of - # every row. -awk '{ print $1 $2 $3 }' names.txt # Print field 1, 2 and 3. -awk '{ print $1" "$2" --> "$3 }' names.txt # Print field 1, 2 and 3, with - # spaces between 1 and 2 and - # --> between 2 and 3. - -``` diff --git a/Labb8/web.awk b/Labb8/web.awk new file mode 100644 index 0000000..e7040d7 --- /dev/null +++ b/Labb8/web.awk @@ -0,0 +1,3 @@ +BEGIN { print "ett skript
" } 
+{ print $0 } 
+END { print "
" }