Sida 1 av 1

Snygga till skript

Postat: 14 okt 2009, 18:04
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

Re: Snygga till skript

Postat: 14 okt 2009, 20:26
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 ...

Re: Snygga till skript

Postat: 14 okt 2009, 20:33
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?

Re: Snygga till skript

Postat: 14 okt 2009, 21:38
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
 

Re: Snygga till skript

Postat: 14 okt 2009, 21:56
av Rasmus
Tackar! Var vad jag letade efter.

Re: Snygga till skript

Postat: 14 okt 2009, 22:11
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"'

Re: Snygga till skript

Postat: 15 okt 2009, 10:05
av gusse02
Det där var riktigt snyggt!

Re: Snygga till skript

Postat: 16 okt 2009, 15:40
av Rasmus
Jag ser att jag behöver kolla mer på xargs, tackar!