Håndtering av tekstfiler

Like dokumenter
Håndtering av tekstfiler

Mer om tekstbaserte verktøy og shellprogrammering i Linux

Filterprogrammer og redirigering av I/O

Filterprogrammer og redirigering av I/O

Eksamensinformasjon. Prosesser. Prosesser. Eksamensoppgave. Operativsystemer (DATS/ITPE2500) Bokmål 06. juni 2017 kl

Linux-programmer som bruker regulæruttrykk: grep, sed, awk

Funksjonalitet og oppbygning av et OS (og litt mer om Linux)

Oversikt. Beskrivelse Bash. 1 UNIX shell. 2 Kommandolinje som brukergrensesnitt. 3 Input og output. 4 Bash builtins. 5 Linux utilities.

Lynkurs i shellprogrammering under Linux

INF120: Oblig 3. Yngve Mardal Moe

Filer i Linux og Bourne-again shell

Håndtering av filer og kataloger

Operativsystemer og nettverk

Oppgaver til forkurs i informatikk dag 2

Løsningsforslag til eksamen 24. november 2015

Linux-kommandolinje for nybegynnere. PVV-kurs

Oppgaver til forkurs i informatikk dag 1

Høgskoleni Østfold. Ny/utsatt EKSAMEN

Filer i Linux og Bourne-again shell

Nyttige Linux-kommandoer. Hvordan du kan jobbe mer effektivt Dag Langmyhr

GrandView. Et dataprogram for samle, organisere og analysere mengder av ulike typer informasjon. Brukermanual

Eksport /Import person

Håndtering av filer og kataloger

Operativsystemer og nettverk Løsningsforslag til eksamen Oppgave 1. a) Linux-kommando: java Beregn & b) Shellprogram:

Unix/Linux en annen måte å gjøre ting på

EKSAMEN. Operativsystemer og nettverk

Oppgave 1 - Java og prosesser (20%)

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring

Shellscripting I. Innhold

Prøve- EKSAMEN. Operativsystemer med Linux

Unix/Linux en annen måte å gjøre ting på

EKSAMEN Innføring i Linux

Brukerveiledning for ArkN4

Generelt om operativsystemer

Unix/Linux en annen måte å gjøre ting på

Skanning del I. Kapittel 2 INF 3110/ INF

EKSAMEN. Operativsystemer. 1. Læreboken "A Practical Guide to Red Hat Linux" av Mark Sobell 2. Maks. tre A-4 ark med selvskrevne notater.

BEGYNNERKURS I SPSS. Anne Schad Bergsaker 26. april 2018

BEGYNNERKURS I SPSS. Anne Schad Bergsaker 12. februar 2019

Generelt om permanent lagring og filsystemer

BEGYNNERKURS I SPSS. Anne Schad Bergsaker 17. november 2017

Tildeling av minne til prosesser

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre,

Høgskolen i Telemark Fakultet for allmennvitenskapelige fag

Filsystemet fra innsiden

Kjenner du alle funksjonene på tastaturet?

Filer og kataloger, prosesser og jobber

Forelesning inf Java 5

Forelesning inf Java 5

Bruk av Domenia Norges AS Webmail

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster

Skanning del I INF /01/15 1

Betinget eksekvering og logiske tester i shell

I denne Knarrhultguiden skal vi se nærmere på hvordan man lager en varslingsfil for sortering av søyer før lamming. Det er laget fire forskjellige

faks: Avdeling for Ingeniørutdanning. Cart Aælersgate Oslo - tlf 05. iu@hio.no

Obligatorisk oppgave 1 INF1020 h2005

Høgskolen i Telemark Fakultet for allmennvitenskapelige fag

1 Diverse linuxtips. Innhold. 1.1 Klipp og lim med musen

1 Diverse linuxtips. Innhold

Joly. Brukerdokumentasjon for foreleser/administrator

Filsystemet fra innsiden

TDT4102 Prosedyreog objektorientert programmering Vår 2016

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

UNIX/Linux brukerveiledning

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

Lab 1: Installasjon av Virtualiseringsløsning (VMWare Server ESXi 6.5) med en Virtuell Linux maskin (Cent OS 7 64-bit)

Bergeland IKT. Elev guide

Effektiv eksekvering av spørsmål

Kurset består av to relativt uavhengige deler. Foreleser: Hårek Haugerud, rom PS431

Operativsystemer og grensesnitt

Forelesningsquiz. Forelesning inf Java 5. Sett dere to (eller tre) sammen og besvar de fire spørsmålene på utdelt ark. Tid: 15 min.

Innholdsfortegnelse. Side 1 av 33

Oppgave 1 - Linux kommandolinje (%)

Dagens tema. Perl: Mer om regulære uttrykk Filer Lister og tabeller Kompilering og interpretering (kapittel ) IN 211 Programmeringsspråk

Algoritmer og datastrukturer Vedlegg A.2 BitOutputStream

Kom i gang med Python

Ta inn og ut av 2D-array. Java 6. Liste over ulike verdier i 2D-array. Det ferdige programmet. Vi skal lage et program som illustrerer hvordan man

6105 Windows Server og datanett

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

Oversikt. INF1000 Uke 6. Objekter, pekere og null. Lese og skrive fra/til fil. Litt om objekter, pekere og null Filer og easyio. Litt mer om tekster

Introduksjon til dataanlegget ved Institutt for informatikk. Marc Bezem Institutt for informatikk Universitetet i Bergen

Kapittel 1 En oversikt over C-språket

GJØVIK INGENIØRHØGSKOLE

Effektiv eksekvering av spørsmål

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 v2009

Print Release Innstillinger

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

Hvordan komme i gang med MUSITs applikasjoner

I denne Knarrhultguiden skal vi se nærmere på hvordan man lager en varslingsfil for sortering av søyer før lamming. Det er laget fire forskjellige

Hvordan å lage og publisere ditt personlige visittkort

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning Data

1,r H øgs kolen i Østfol d

Spesifikasjon av filformater Transaksjonsspesifikasjon

INF100/INF100-F - INNLEVERING 2 HØSTEN 2005

IN Seminaroppgaver til uke 11

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 v2008

6105 Windows Server og datanett

For å sjekke at Python virker som det skal begynner vi med å lage et kjempeenkelt program. Vi vil bare skrive en enkel hilsen på skjermen.

Nedlasting og brenning av egne ISO-cd-er

Transkript:

Håndtering av tekstfiler

Linux og tekstlige data Linux er i stor grad et tekstbasert OS Effektiv bruk og administrasjon av Linux krever at man mestrer verktøy for å håndtere tekstlige data Linux har svært mange og gode verktøy for teksthåndtering De fleste verktøyene er filterprogrammer som leser tekst fra stdin og skriver output til stdout

Tekstverktøy i Linux Vi skal studere verktøy for å: Se på innholdet i tekstfiler Sammenligne innholdet av ulike filer Sortere innholdet i filer Plukke ut deler av teksten i filer Transformere tekst Søke i tekstlige data * *: Søking gjøres oftest med programmet grep kommer senere i kurset

Se på innholdet av tekstfiler cat Kopierer standard input til standard output Kan også ta filnavn som argumenter more og less For å se lange filer en side om gangen less mer leksibel med mange flere opsjoner (less is more...) head Viser de første linjene på en tekstfil (headerinformasjon) tail Viser de siste linjene på en tekstfil Opsjonen f (follow) kan brukes til overvåking av logg-filer

Sammenligne innholdet av tekstfiler diff Viser forskjellene mellom to filer på en systematisk måte Kan brukes til automatisk patching / softwareoppgradering Kan også sammenligne flere filer og hele innholdet i kataloger cmp Sammenligner to filer, stopper ved første ulike byte Kan angi hvilke deler av filene som skal sammenligner comm For å sammenligne to sorterte tekstfiler

wc Telle antall linjer, ord og tegn Leser fra stdin, skriver til stdout Kan også ta tekstfiler som input Nyttig kommando som brukes mye i pipelines Opsjoner: l Vis bare antall linjer i input w Vis bare antall ord m Vis bare antall tegn

sort Sortering av linjer med tekst Brukes til: Sortering av enkeltfiler og sortering i pipelines Samsortering av flere filer Sjekke om en fil allerede er sortert Fletting (ikke sortering) av allerede sorterte filer sort er ikke veldig rask * : Bruker temporærfiler underveis i sorteringen Sortering av store datasett gjøres med andre verktøy sort er svært fleksibel med mange opsjoner * Sorteringsalgoritmen som brukes i GNU-Linux er flettesortering/merge sort

Sorteringskriterier Default sort uten opsjoner: Sorterer hele linjer på tegnverdi i stigende rekkefølge Tegn på begynnelsen av linjene er mest signifikant Whitespace ignoreres Sorteringsrekkefølge (alfanumeriske tegn): Siffer før bokstaver Bokstaver sorteres alfabetisk Små bokstaver foran store bokstaver Mange opsjoner til sort for å endre sorteringskriteriet

Endring av sorteringskriteriet n numeric Sorterer tall riktig h human Skjønner tall som f.eks 1K og 2G r reverse Sorterer i omvendt rekkefølge f fold Ikke case-sensitiv M month Sorterer månedsnavn riktig kn kolonne Sorterer mhp. kolonne nr n på linjene*, kolonner er default space-separert tc separator Angir at tegnet c skiller kolonnene i stedet for space *: Sorteringskriterier kan angis lokalt for hver kolonne

sort: eksempler Sortering av en fil, med default kriterier: sort sort_test_1 Kolonnevis sortering av en fil: sort k4nr k5 sort_test_2 Sortering av filinformasjon etter størrelse: ls l sort k5nr Sortering av brukerdatabasen på ask.hiof.no: ypcat passwd sort t: k5 more ypcat passwd sort t: k3n more

Noen flere opsjoner til sort o Skriv output til fil (overskriving) c Bare sjekk om fil er sortert, ikke sortér m Flett sammen sorterte filer, ikke sortér Feiler hvis usorterte filer u Filtrér ut like påfølgende linjer S Sett størrelsen på RAM-bufferet som brukes til sortering (for store jobber)

uniq håndtering av dupliserte linjer Leser stdin eller en fil, skriver til stdout eller fil Sjekker om påfølgende linjer er like (duplikater) Fjern alle påfølgende like linjer, lagre resultatet: uniq fil 1.txt > fil 2.txt uniq finner ikke like linjer i input hvis de ikke kommer rett etter hverandre: Sortér input først og pipe videre til uniq Eller bruk sort u

Noen opsjoner til uniq c count Skriv antall ganger linjen er repetert u unique Bare skriv linjer som ikke repeteres d repeated Bare skriv linjer som repeteres sn skip-char fn skip-field wn check Ignorér første n tegn på hver linje Ignorér første n felt på hver linje Bare sjekk første n tegn på hver linje

uniq: Eksempel To datafiler for kursene Operativsyster med Linux og Datakommunikasjon med navn på alle studentene i hvert kurs (fra høsten 2015). Alle studentene som følger ett eller begge kurs: sort OSML_2015.txt DK_2015.txt uniq Bare studenter som tar begge kursene: sort OSML_2015.txt DK_2015.txt uniq d Kun studenter som bare tar ett av kursene: sort OSML_2015.txt DK_2015.txt uniq u Alle studenter og antall kurs de tar: sort OSML_2015.txt DK_2015.txt uniq c

tr: Bytt og fjern tegn i input (translate) Leser standard input tegn for tegn Redigerer tegnene etter gitte regler før utskrift til standard output: Kan bytte ut alle tegn i en angitt tegnmengde med korresponderende tegn i en annen tegnmengde Kan fjerne angitte tegn fra input Kan klemme sammen påfølgende forekomster av tegn i input, til ett enkelt tegn Håndterer spesialtegn og non-printables i både input og output (linjeskift, tab, backspace...)

tr: Syntaks tr [opsjoner] SET1 [SET2] SET1 er en samling tegn der hvert tegn byttes med tegnet i samme posisjon i SET2 SET kan angis som: Eksplisitt liste av tegn: abcdef 0123 xxyyzz Sekvens av påfølgende tegn: a z A Z 0 9 i m Spesialmengder som f.eks. [:alnum:] mengden av alle bokstaver og siffer Spesialtegn angis f.eks. slik: "\n" "\t" new line horizontal tab

tr: Opsjoner d delete Fjern alle tegn som er i SET1 (SET2 skal ikke angis) c complement Bruk alle tegn som ikke er i SET1 som SET1 s squeeze Flere forekomster rett etter hverandre av et av tegnene i SET1, skal erstattes med kun én forekomst av det motsvarende tegnet i SET2

tr: Eksempler tr abc def tr abc d tr 0 9 X tr s 0 9 X tr d A Z tr c 0 9 X tr ' ' "\t" Bytt ut a med b, b med e og c med f Bytt ut a, b og c med d Bytt ut alle siffer med X Skvis påfølgende siffer sammen til én X Fjern alle store bokstaver fra input Bytt ut alt(!) som ikke er siffer med X Bytt ut SPACE med TAB tr cs A Za z "\n" Bytt ut alle påfølgende tegn som ikke er engelske bokstaver med ett enkelt linjeskift

Eksempel: Tekstanalyse Vil lage en sammensatt Linux-kommando som: Leser en hel fil med engelsk tekst Finner og skriver ut de (f.eks.) 20 mest brukte ordene i teksten Ordene skal sorteres etter antall forekomster Antall ganger hvert ord forekommer skal også skrives ut sammen med ordet Bruker tr, sort og uniq for å løse problemet

Tekstanalyse: Implementasjon Bruk tr til å splitte opp de innleste tekstlinjene i enkeltord skrevet med små bokstaver, med ett ord på hver linje Sorter ordene alfabetisk med sort Bruk uniq c til å telle hvor mange ganger hvert ord forekommer Sorter ordene med sort etter antall forekomster, i omvendt numerisk rekkefølge Bruk head til å bare skrive ut de 20 mest brukte

Tekstanalyse: Løsning tr sc a za Z "\n" < fil.txt \ tr A Z a z sort uniq c \ sort nr tr s ' ' ' ' head 20

cut: Utvalg av kolonner med data * Plukker ut deler av linjer i tekstlig input Skriver den utvalgte teksten til standard output Teksten som skal tas ut velges som: Enten faste kolonner angitt med tegnposisjon, eller Felt på linjene mellom skilletegn (i databaser etc.) Brukes ofte sammen med kommandoen grep til å hente system- og brukerinformasjon i Linux *: cut er lettvint å formulere eksamensoppgaver med...

cut: Opsjoner c characters Plukk ut faste tegnposisjoner f fields Plukk ut felter mellom skilletegn d delimiter Angi skilletegnet (default er TAB) s only-delimiter Ikke skriv ut linjer uten skilletegn complement Velg delen av linjen som ikke er angitt output delimiter=string Bruk STRING som skilletegn i output

cut: Eksempler cut c3,5 Plukk 3. og 5. tegn på hver linje cut c2 8 Fra og med 2. til og med 8. tegn cut c 5 Fra start av linje til og med 5. tegn cut c8 Fra og med 8. tegn til slutten av hver linje cut f2 cut f3 5 cut c 2,8 2. felt på linjen 3., 4. og 5. felt på linjen 1. og 2. tegn, og fra og med 8 til slutten cut complement c 2,8 Samme som cut c3,4,5,6,7

cut: Hente brukerinformasjon Brukernavn og fullt navn for alle brukere: ypcat passwd cut d: f1,5 Hvor mange heter Ole?: * ypcat passwd cut d: f5 grep w\ [Oo]le wc l PID og navn for alle prosessene til en bruker: * ps u user tr s ' ' ' ' cut d' ' f1,4 Navn og logintid for alle som er logget på: who tr s ' ' ' ' cut d' ' f1,4 *: Kommandoene grep og ps vil bli gjennomgått senere i kurset

cut: Hente systeminformasjon Hvor mye RAM er det på maskinen?: free grep Mem tr s ' ' ' ' cut d' ' f2 Hvor mange Kbytes med diskplass er det i hele filsystemet? df total grep ^total tr s ' ' ' ' cut\ d' ' f2 Hva slags CPU er installert?: cat /proc/cpuinfo grep name cut d: f2 uniq Hva er Mac-adressen til nettverkskortet?: ifconfig eno1 grep HWaddr cut d' ' f11