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