Sida 1 av 1

Sortera de tio största filerna överst

Postat: 27 feb 2008, 08:43
av Aluhuru
Hejsan!
Hur kan jag med hjälp av sort & head-kommandot fixa så att de 10 största filerna kan listas i terminalen?

Aluhuru

SV: Sortera de tio största filerna överst

Postat: 27 feb 2008, 09:03
av mcNisse
ls -l | sort -rnk5 | head 10

SV: Sortera de tio största filerna överst

Postat: 27 feb 2008, 09:06
av mcNisse
Om du menar i filsystemet, kanske detta fungerar. Byt ut / mot därifrån du vill leta.

find / -type f -print0 | xargs -0 ls -l | sort -nrk5 | head -20

SV: Sortera de tio största filerna överst

Postat: 27 feb 2008, 09:16
av Aluhuru
Tackar - löste sig genom att jag förkortade bort på ditt sista find / fram till xargs -0
så att det bara stod ls -l | sort -nrk5 | head -10

Tusen tack! Bash-script tycker inte jag är så lätt att lära sig, men när man väl behärskar det går det jättebra, synd bara att jag fortfarande inte har fått grepp om sed och egrep.

//Aluhuru

Sed

Postat: 27 feb 2008, 10:10
av Aluhuru
Tänkte ta upp ett annat problem som jag har (dumt att bara starta en [ny/u]tråd för det).
Det handlar då om sed och ska följa den här modellen: '/någonting/s/någonting/någonting/g'
Själva problemet handlar om att jag inte vet hur jag ska kunna ersätta ett ord med ett annat i en textfil, om bara andra tecknet på en rad matchar en viss sträng.  :-\

Det vore snällt om någon kunde ge mig en vägledning på detta.  :-[

//Aluhuru

SV: Sortera de tio största filerna överst

Postat: 27 feb 2008, 10:30
av mcNisse
Kan du beskriva vad du vill byta ut?

Jag kan visa ett enkelt exemel, detta byter ut alla o mot e (g ser till att alla förekomster byts, prova utan g och se skillnaden)

Kod: Markera allt

(echo bar;echo foo;echo foobar) | sed "s/o/e/g"

SV: Sortera de tio största filerna överst

Postat: 27 feb 2008, 10:34
av Aluhuru
Hej
Som svar då kan jag ange:

Att alla 'b' i en fil ska bytas ut till append bara om den andra tecknet på raden är ett 'a'.
SOm du såg ska jag vad jag förstår använda någon form av sträng innan /s/

SV: Sortera de tio största filerna överst

Postat: 27 feb 2008, 10:50
av mcNisse
Detta tror jag skulle fungera. Sed blir för jobbigt. Perl kanske skulle vara klara det bättre.
Byter även b innan a. Är det ett problem får du göra en substräng som du substitiuerar i...

Kod: Markera allt

awk '/^.a/ {gsub("b", "append"); print $0; next} {print $0}'

SV: Sortera de tio största filerna överst

Postat: 27 feb 2008, 10:55
av Lars
Jag tänkte också awk först, men en lösning med sed är faktiskt enklare:

Kod: Markera allt

sed "/^.a/ s/b/append/g"

SV: Sortera de tio största filerna överst

Postat: 27 feb 2008, 11:44
av mcNisse
Den var vacker. :)
Funkar sed som awk? Det har en match och sedan en liten programsnutt. Lägger man kommandon på nya rader eller kan man använda cpkolon; mellan kommandon?

SV: Sortera de tio största filerna överst

Postat: 27 feb 2008, 11:51
av Konservburk
mcNisse skrev: Funkar sed som awk? Det har en match och sedan en liten programsnutt. Lägger man kommandon på nya rader eller kan man använda cpkolon; mellan kommandon?
Du kan ha kommandona på varsin rad:

Kod: Markera allt

sed '
s/a/b/
s/x/y/
' <fil
... eller med kolon mellan dem:

Kod: Markera allt

sed 's/a/b/;s/x/y/' <fil
... eller uppdelade på samma rad:

Kod: Markera allt

sed -e 's/a/b/' -e 's/x/y/' <fil