Snygga till skript

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
Rasmus
Inlägg: 2291
Blev medlem: 07 sep 2006, 18:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Svalsta

Snygga till skript

Inlägg av Rasmus »

Jag har ett skript som jag skulle vilja snygga till, speciellt sed delen för att slippa spara en tempfil.

Kod: Markera allt

#!/bin/bash

for i in `seq 1 500`
do
	wget http://xkcd.com/$i/
	namn=`grep http://imgs.xkcd.com/comics/ index.html | head -1 | cut -d\" -f2`
	wget $namn
	echo $namn > a
	namn=`sed 's|http:\/\/imgs.xkcd.com\/comics\/||g' a`
	mv $namn "$i - $namn"
	rm index.html
done
rm a
Det skriptet gör är att hämta serie 1 - 500 hos xkcd och döpa om dem till nummer - namn.
Men som sagt, hur snyggar man till detta på ett bra sätt?

Orginalskriptet hittar ni här: http://snippets.dzone.com/posts/show/4658
gusse02
Inlägg: 258
Blev medlem: 16 maj 2008, 12:17
OS: Ubuntu
Utgåva: 20.04 Focal Fossa LTS

Re: Snygga till skript

Inlägg av gusse02 »

Byta namn på filen på ett smidigt sätt kan du göra med

Kod: Markera allt

prename
.

Kod: Markera allt

$ prename "s|http:\/\/imgs.xkcd.com\/comics\/|$i - |g" $namn
typ ...
Användarvisningsbild
Rasmus
Inlägg: 2291
Blev medlem: 07 sep 2006, 18:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Svalsta

Re: Snygga till skript

Inlägg av Rasmus »

Problemet är att $namn inehåller tex. http://imgs.xkcd.com/comics/static.png så jag måste först kapa http://imgs.xkcd.com/comics/ från $name innen jag "vet" vad filen heter. Eller missförstod jag nu?
gusse02
Inlägg: 258
Blev medlem: 16 maj 2008, 12:17
OS: Ubuntu
Utgåva: 20.04 Focal Fossa LTS

Re: Snygga till skript

Inlägg av gusse02 »

basename är väl bra annars för att lista ut filnamnet

Kod: Markera allt

$ basename http://imgs.xkcd.com/comics/static.png
static.png
 
Användarvisningsbild
Rasmus
Inlägg: 2291
Blev medlem: 07 sep 2006, 18:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Svalsta

Re: Snygga till skript

Inlägg av Rasmus »

Tackar! Var vad jag letade efter.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Snygga till skript

Inlägg av Konservburk »

Rasmus skrev:Jag har ett skript som jag skulle vilja snygga till, speciellt sed delen för att slippa spara en tempfil.
Om du vill slippa tempfiler så är det bra att sätta sig in i hur pipelines fungerar. I det här fallet kan du skippa det mesta, både tempfiler och mellanlagringsvariabler (och till och med själva loopen) genom att köra alltihop genom en enda pipeline:

Kod: Markera allt

seq 500 |
xargs -i wget -qO- "http://xkcd.com/{}" |
sed -n '\|/*</h3>|{s|||;s|.*/||p}' |
xargs -n2 sh -c 'wget -O "$0 - $1" "http://imgs.xkcd.com/comics/$1"'
gusse02
Inlägg: 258
Blev medlem: 16 maj 2008, 12:17
OS: Ubuntu
Utgåva: 20.04 Focal Fossa LTS

Re: Snygga till skript

Inlägg av gusse02 »

Det där var riktigt snyggt!
Användarvisningsbild
Rasmus
Inlägg: 2291
Blev medlem: 07 sep 2006, 18:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Svalsta

Re: Snygga till skript

Inlägg av Rasmus »

Jag ser att jag behöver kolla mer på xargs, tackar!
Skriv svar

Återgå till "Terminalforum"