Håndtering av tekstfiler

Like dokumenter
Håndtering av tekstfiler

Filterprogrammer og redirigering av I/O

Mer om tekstbaserte verktøy og shellprogrammering i Linux

Filterprogrammer og redirigering av I/O

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

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

Lynkurs i shellprogrammering under Linux

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

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

Operativsystemer og nettverk

Løsningsforslag til eksamen 24. november 2015

Håndtering av filer og kataloger

INF120: Oblig 3. Yngve Mardal Moe

Filer i Linux og Bourne-again shell

Oppgave 1 - Java og prosesser (20%)

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

Linux-kommandolinje for nybegynnere. PVV-kurs

Filer i Linux og Bourne-again shell

Oppgaver til forkurs i informatikk dag 2

Oppgaver til forkurs i informatikk dag 1

Generelt om operativsystemer

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

Shellscripting I. Innhold

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

Tildeling av minne til prosesser

EKSAMEN (Konvertert fra en gammel PHP-eksamen)

EKSAMEN Innføring i Linux

Prøve- EKSAMEN. Operativsystemer med Linux

Høgskolen i Telemark Fakultet for allmennvitenskapelige fag

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

Håndtering av filer og kataloger

Brukerveiledning for ArkN4

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

TDT4102 Prosedyreog objektorientert programmering Vår 2016

EKSAMEN. Operativsystemer og nettverk

1. obligatoriske innlevering, høsten 2014

Skanning del I. Kapittel 2 INF 3110/ INF

Kjenner du alle funksjonene på tastaturet?

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

Ordliste. Obligatorisk oppgave 1 - Inf 1020

Eksport /Import person

UNIX/Linux brukerveiledning

Filer og kataloger, prosesser og jobber

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

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

Filsystemet fra innsiden

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

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

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

Tildeling av minne til prosesser

BEGYNNERKURS I SPSS. Anne Schad Bergsaker 26. april 2018

BEGYNNERKURS I SPSS. Anne Schad Bergsaker 12. februar 2019

EKSAMEN. Les gjennom alle oppgavene før du begynner. Husk at det ikke er gitt at oppgavene står sortert etter økende vanskelighetsgrad.

Algoritmer - definisjon

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

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

1 Diverse linuxtips. Innhold

Installasjonsveiledning for Ordnett Pluss

6105 Windows Server og datanett

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

Generelt om permanent lagring og filsystemer

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

Skanning del I INF /01/15 1

Øvingsforelesning TDT4105

infotorg Enkel brukermanual

HOWTO Sette opp Skolelinux med tynne klienter og printer

Algoritmer og Datastrukturer

HowToUse TTIME. Thierry Matthey 9.

6105 Windows Server og datanett

NSA mandag 4. oktober Brukerbehandling Systempolitikk Kontroll av resurser Om system logger Litt om cron og cfengine

D2-IC0842a Automatisk oppsamling av vinterdriftstdata i ELRAPP

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

while-økker while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt Eksempel 1: en enkel while-løkke

6105 Windows Server og datanett

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

Dokumentmaler inneholderinformasjon som skal gjenbrukes for mange dokumenter: Layout, fast innhold og koder for standard variabelt innhold som tittel

Excel. Kursopplegg for SKUP-konferansen Laget av

BEGYNNERKURS I SPSS. Anne Schad Bergsaker 17. november 2017

3. Kravspesifikasjon. Experior - rich test editor for FitNesse -

Shellprogrammer og -variabler

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

UKEOPPGAVER 13: KONFIGURASJONSSTYRING

Linux distribusjoner

$ls -l $grep -i Olsen adresseliste.txt less #!/bin/sh $echo `ls` $chmod 755. Praktisk Linux. Grunnleggende skall kommandoer. Irene Ludvigsen Husa

Forelesning inf Java 5

Styrepute og tastatur

Forelesning inf Java 5

TOD063 Datastrukturer og algoritmer

Spørsmål fra forrige forelesning. INF1000 Forelesning 7. Oppførselen til inword()/inint()/etc. Operator-presedens i Java

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang. Sjekkliste. Introduksjon

Transkript:

Håndtering av tekstfiler

Tekstlige data og Linux Linux er i stor grad et tekstbasert OS Har svært mange og gode verktøy (filterprogrammer) som leser tekst fra STDIN eller filer, og skriver tekstlig output til STDOUT eller til fil Vi skal studere verktøy for å: Se på innholdet i filer Sammenligne innholdet av ulike filer Sortere innholdet filer Plukke ut deler av teksten i filer Transformere tekst Søke i tekstlige data (med bl.a. grep kommer senere i kurset)

Se på innholdet av tekstfiler cat Kopierer standard input til standard output Kan også ta filnavn som argumenter Med redirigering kan cat kopiere og skjøte sammen filer more og less For å se lange filer en side om gangen less er mer fleksibel og har 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, f.eks. softwareoppgradering Kan også sammenligne flere filer og hele innholdet i kataloger cmp Sammenligner to filer, stopper ved første ulike byte Opsjoner for å angi hvilke deler av filene som skal sammenligner comm For å sammenligne to sorterte tekstfiler

Telle antall linjer, ord og tegn i en tekstfil wc print newline, word, and byte counts 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 svært store datamengder bør gjøres med annen programvare enn Linux sort 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, slik at f.eks. tall sorteres korrekt

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 tc separator Sorterer mhp. kolonne nr n på linjene*, kolonner er default space-separert 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 Ignorér første n tegn på hver linje fn skip-field Ignorér første n felt på hver linje wn check Bare sjekk første n tegn på hver linje

uniq: Eksempel To datafiler for kursene Operativsyster med Linux og Datakommunikasjon høsten 2015, med navn på alle studentene i hvert kurs 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 et tegn eller en gruppe tegn i input, til et enkelt tegn i output 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

En Linux-kommando som gjør tekstanalyse Problem: Sett sammen en Linux-kommando (med bruk av pipe) 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 n meste 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 eller fil 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 ut 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 innloggingstidspunkt for alle som er logget på systemet: who tr s ' ' ' ' cut d' ' f1,4 *: Kommandoene grep og ps vil bli gjennomgått senere I kurset

cut: Hente ut 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 eth0 grep HWaddr cut d' ' f11 Hvilken nettverkstjeneste bruker en bestemt port?: egrep w <portnr> /etc/services cut f1 uniq