100910

100910

Förmiddag
ls
-l

ägare grupp storlek namn

grep

ett verktyg för att hitta tecken och/eller ord i filnamn eller inne i filer.

sed

det kommer från ed, vilket är ett verktyg som inte kan gå bakåt när man editerar filer (även vi kommer från det)

sed är dock ingen editor utan hanterar strömmar som man skickar till den.

Från sed kom senare awk.

awk är ett programmeringsspråk som använder regexpar.

Den fungerar så att den letar efter regexpar och utför en handling när den hittar dessa.

tr söker och ersätter tecken, exempelvis byter den bort samtliga ö mot o om man så önskar.

cut plockar ut kolumner, de element man behöver ur output

paste lägger till kolumner, lägger exempelvis ihop du och ls om man så önskar.

grep 'uttryck' (filen)

'innehåll' säger åt skalet att regexpen innehåll ska hanteras av sig själv

innehåll” säger åt skalet att hantera regexpen
grep -v 'uttryck' tar ut  de  namn som inte innehåller uttryck

grep -i 'uttryck' struntar i case sensitivity

grep -n 'uttryck' skriver ut radnummer

grep -A# 'uttryck' skriver raden och rader efter med lika många nummer som #

grep -B# 'uttryck' skriver raden och rader innan med lika många nummer som #

grep -C# 'uttryck' skriver rader både före och efter

grep -D 'uttryck' skriver ut alla rader där det inte står 'uttryck'

grep --color 'uttryck'

sudo cat /var/log/messages.2 | grep -i irq | wc -l
yum list listar alla paket som yum känner till, installerade som icke installerade

yum list | grep -v -i installed plockar fram de som är installerade

Det varierar om man måste köra seperata växlar (-[bokstav]) eller om man ska köra flera bokstäver efter en växel (-[bokstav 1bokstav2)
yum list | grep -vi installed | grep xorg | grep 386 grepar efter de program som inte är installerade och innehåller xorg och 386
ls /usb/bin | grep grep letar efter de olika kommandon som heter något med grep
fgrep optimerad att söka i stora filer (hundratals megabyte)
Det finns flera typer av grepar som alla är optimerade för specifika saker.

man kommando för att söka information om kommandon, innehåller alla switchar och vad de gör, dock något kryptiskt,
apropos söker efter termer som program har att göra med

apropos
gör samma sak som man -k

sed
sudo cat /var/log/messages | sed s/klas/fjant/
byter ut klas mot fjant
ls -l | sed 's#klas#fjant#' ska vara samma sak fast bara första termen
ls -l | sed 's#klas#fjant#'g#' ska vara samma sak som första

tr plockar enskild tecken och byter ut dem
sort sorterar text
Normalt sorterar den inte i nummerordning utan i alfabetisk ordning (234 kommer innan 3)
sort -n sorterar i nummerordning (3 kommer innan 234)
uniq tar bort duplika rader
cut plockar ut data kolumnvis från indataströmmen
paste
lägger ihop text från flera filer
cut fil1 fil2 > fil3 lägger ihop fil1 och fil2 in i fil3
paste fil1 fil2>fil3 kommer matcha ihop filerna radvis
awk mönsterigenkännade och processspråk
Fungerar så att man lägger upp regexpar och sen om man får en match på det uttrycket så kör man det kommandot.
Det går även i gnu-awken att köra ett vanligt traditoniellt sekventiellt program innan eller efter att man kört regexpar.
Går att lura awk att uppföra sig som en programmerare är van vid.
Återigen, man hamnar lite mitt emellan stolarna med det och det kan på många sätt finnas bättre alternativ då de är ungefär lika komplexa men mer kompletta, dessutom finns det oftare hjälp och kod att hitta på nätet till dessa vilket är praktiskt.

Eftermiddag
Regular expression
. godtyckligt tecken
* flera godtyckliga tecken
.* Kan också vara flera godtyckliga tecken, varierar lite

sed s/apa/kanin/g byter ut alla "apa" mot "kanin"

sed 's/apa/kan\/n/g'
Många specialtecken har en speciell funktion för alla program, därför är det viktigt med fnuttar.
Man kan alltid ha \ som ett prefix för att föra in ett specialprogram.

[a-z, A-z]
Hittar de tecknen som är innanför paragraferna.
[a-ö]
Problemet med a-ö är att det går inte zåäö utan tar med en massa andra tecken också.

Predefined character classes heter de olika uppsättningarna som man ska leta efter för att veta vilken locale man har, [:alumn:] är en sån.

locale
libc (glibc) är det som avgör de lokalspecifika funktionerna
locale är det som avgör var man är och vad man har för tangentbordsuppsättning

* - 0 eller fler gånger
+ - 1 eller fler gånger
? - 0 eller 1 gång
{n} - exakt n antal gånger
{n,} - åtminstone n antal gånger
{n,m} - mellan n och m antal gånger

egrep den grep som är mest praktiskt att använda med regexpar
ls -l | egrep 'o*' visar alla som har 0 eller fler o.
ls -l | egrep 'o+' visar alla som har 1 eller fler o.
ls -l | egrep 'o{1,}' visar alla som har ett eller fler o
ls -l | egrep 'o{1,2}' visar alla som har 1-2 o.
ls | egrep e | grep -v -t visar de som har e men inte t
ls | egrep '[ea]' | grep -v t hittar alla som har e eller a och tar bort de som innehåller t
ls | egrep  '[ea]+.*[ea]+' läser ut alla som innehåller e eller a.
[ea] matchar e eller a
+minst en gång
.* matchar på 0 eller flera tecken
[ea]+ minst en gång