C&UNIX awk, sed och grep 1 awk, sed och grep awk döpt efter Aho Weinberger Kernighan (1977) sed en stream editor grep sed g/re/p bygger i viss mån på ed line editor
C&UNIX ed 2 ed Standard unix editor tidig 70-tal program < 8Kbyte terminal 10 tecken s 1 teckenbaserad kommandogränssnitt radbaserad textbehandling kan köras från script varför nu? introduktion till (andra) filter bra att ha i nödfall
C&UNIX ed 3 ed kommandon default värden framför komando får utelämnas kommando effekt.a append, until line consisting of period.,.c change 1,$g/re/cmd utför cmd på rader inom 1,$ matching re.,.+1j join.,.p print lines q quit.,.s/re/new/ substitute 1,$w file write to file
C&UNIX grep 4 grep grep Söker efter mönster ur filer a fgrep Söker efter stränger ur filer, snabb egrep Söker efter mönster ur filer, utökat reguljära uttryck a Tänk på att allt är filer i UNIX
C&UNIX grep 5 grep-kommandon Options Betydelse -b Visar byte offset -c Räknar bara matchade rader -f file egrep läser in reguljära uttryck från fil -i Ignore case -l Lista bara filnamn vid träff -num Visar num rader före och efter träff -q Skriver bara ut felmeddelanden -s Skriver inte ut felmeddelanden -v Skriv ut alla icke träffade rader -w Sök efter hela ord (fgrep)
C&UNIX grep 6 grep if* Exempel grep grep \<ex grep -i ^mcc grep ch[0-9]* grep -v #
C&UNIX Fler filter, e.d. 7 Fler filter, e.d. od grep tr sort uniq comm diff wc se bytes i filen global regular expression parser translitterate characters sorterar rader rensar bort identiska rader jämför två filer skriv ut skillnader mellan filer word count
C&UNIX sed 8 sed Bygger på editorn; ed. sed-uppbyggnad sed list-of-ed-commands filenames... sed [adress]s/pattern/replacement/flag sed modifierar inte infilen. sed skriver ut alla rader, även dom som inte har modifierats.
C&UNIX sed 9 sed-kommandon Flagga Betydelse d Radera raden, läst nästa rad l Lista rader, gör icke synliga tecken synliga p Skriv ut raden q Quit r file Läs file, kopiera till output s/old/new/f Byter ut old mot new f =g Byt ut alla förekomster (på raden) f =p Print f =w file Skriv till file f =r file Läser från file y/str1/str2/ Byter ut tecken från str1 mot matchande ur str2 = Skriv ut radnummer! Utför sed-kommando enbart om raden inte är vald
C&UNIX sed 10 Argument Betydelse -f file Läser kommandon från file -n Listar endast rader som har matchats -e sed-kommandon Används för multipla för sed-instr
C&UNIX sed 11 Multipla sed-instruktioner sed s/ a/, AAA/; s/ b/, BBB/ sed -e s/ a/, AAA/ -e s/ b/, BBB/ sed s/ a/, AAA/ s/ b/, BBB/
C&UNIX sed 12 sed s/a/aaa/g infil > utfil Exempel sed Byter ut alla förekomster av a mot aaa i filen infil, och skriver resultat i filen utfil
C&UNIX sed 13 Indentering - 1 sed s/^/ / Indentering - 2a sed /./s/^/ / Indentering - 2b Fler exempel... sed /^$/!s/^/ / fil grep begin sed -n /begin/p fil grep -v begin sed -n /begin/!p byter alla a z mot A Z sed y/abcde...z/abcde...z/ Tyvärr, inga intervall.
C&UNIX sed 14 Flera exempel forts... lista rad 20 30 sed -n 20,30p tail +11 sed 1,10d fil tabort från första t.o.m. första tomma raden sed 1,/^$/d fil tabort raden med regular sed /regular/d tabort alla rader med regular sed g/regular/d tabort alla mellan borjan och slut sed /borjan/,/slut/d tabort sista raden sed $d fil
C&UNIX sed 15 Flera exempel forts... där regular expression finns, byt ut regular mot complex sed g/regular expression/s/regular/complex/g åäö HTML-varianter sed s/å/\å/g s/ä/\ä/g s/ö/\ö/g s/å/\å/g s/ä/\ä/g s/ö/\ö/g bytut <company-list> mot innehållet i filen company-list sed /~<company-list>/r company-list /~<company-list>/d
C&UNIX sed 16 > cat text1 sed-script Zonker Harris, Long Beach CA Mickey Mouse, Anaheim CA Elvis Presley, Memphis TN Bill Clinton, Washington DC > cat s2in s/ CA/, California/ s/ TN/, Tenessee/ s/ DC/, District of Columbia/ > sed -f s2in text1 Zonker Harris, Long Beach, California Mickey Mouse, Anaheim, California Elvis Presley, Memphis, Tenessee Bill Clinton, Washington, District of Columbia
C&UNIX sed 17 Gruppering av kommandon { } används för gruppering av sed-kommandon. Inom intervallet borjan slut, tabort alla tomma rader /borjan/,/slut/{ /^$/d } Inom intervallet borjan slut, tabort alla tomma rader och byt ut a, AAA... /borjan/,/slut/{ /^$/d s/ a/, AAA/ s/ b/, BBB/ }
C&UNIX awk 18 awk awk - ursprungsversionen nawk - newawk gawk - GNU s variant av awk
C&UNIX awk 19 awk intro Options Betydelse -F Sätter om sklijetecknet, från standard white space -f Läser in awk pattern command från fil awk [-F] {-f ProgFile Program } [file] Ingen file STDIN Ingen pattern, processar varje rad Inget action, skriver ut raden ls -l awk {print $9,$5}
C&UNIX awk 20 tilldelning utskrift awk actions var = uttryck print printf (som i C) flow of control if for while... (som i C) inbyggda funktioner cos sin log exp int length inbyggda varuabler NF antal fält på nuvarande rad NR sekvensnummret för nuvarande rad FS (in) fältseparator RS (in) record separator OFS (ut) fälseparator ORS (ut) record separator OFMT (ut) format för siffror (%g)
C&UNIX awk 21 Hello world awk {print "hello world"} test Man måste ange ett filnamn test efter, annars vill awk läsa från STDIN. $ cat test2 Hello world $ awk {print } test2 awk BEGIN {print "hello world" } BEGIN-gör detta först kolla sedan efter infil.
C&UNIX awk 22 Hittar tomma rader Pattern Matching awk /^$/ {print "Empty line" } fil Hittar lite mer... $ cat awkscr # Titta en kommentar! /[0-9]+/ { print "En siffra" } /[A-z]+/ { print "En bokstav" } /^$/ { print "Tom rad" } $ awk -f awkscr
C&UNIX awk 23 Records och Fält awk { print $1 $2 $3 } fil awk { print $1,$2,$3 } fil,:at ger mellanrum (OFS) i utskriften. Byte av separator awk -F, {print $5 $3 $0} fil
C&UNIX awk 24 awk /MA/ { print $4 } Skriver ut fjärde kollumnen på alla rader som innehåller MA. awk $2 ~ /MA/ { print $4 } Skriver ut fjärde kollumnen på alla, där MA finns i andra kollumnen.
C&UNIX awk 25 Tilldelning Expressions z = "Hello" q = "Hello " "world" # q = "Hello world" a = $1 x = 1 y = x + 1
C&UNIX awk 26 /^$/ { print ++x } Räknar tomma rader Räknar upp och skriver ut antalet tomma rader. /^$/ { ++x } END { print x } Räknar först upp, sedan på slutet, skriver ut antalet tomma rader.
C&UNIX awk 27 OFS FS BEGIN { FS = "," ; OFS = "\t"} { print $1, $2 } END { print NR "rader utskrivna" } NR är en räknare för antalet inlästa records.
C&UNIX awk 28 Checkbook BEGIN { FS = "\t" } NR == 1 { print "Ingående: \t" $1 balance = $1 next } { print $1,$2,$3 print balance -= $3 } END { print "Kvar:\t" balance } Datafil 1000 125 Affär 42 127 Hyra 47 Resultat Ingående: 1000 125 Affär 42 958 127 Hyra 47 911 Kvar: 911
C&UNIX awk 29 sed och awk tillsammans bystate awk -F, { print $4 ", " $0 } $* sort awk -F, $1 == LastState { print "\t" $2 } $1!= LastState { LastState = $1 print $1 print "\t" $2 } text1 Zonker Harris, 362 Trudeau Avenue, Long Beach CA Mickey Mouse, 121 Studio Boulevard, Anaheim CA Elvis Presley, Gracelands, Memphis TN Bill Clinton, Pennsylvania Avenue, Washington DC John Irvine, The Bear Pit, Vienna MN
C&UNIX awk 30 sed och awk tillsammans forts... s3sedin s/ CA/, California/ s/ MN/, Maine/ s/ TN/, Tenessee/ s/ DC/, District of Columbia/ Kommando sed -f s3sedin text1 bystate Resultat: California Mickey Mouse Zonker Harris District of Columbia Bill Clinton Maine John Irvine Tenessee Elvis Presley