GeekTool - Tråden!

Tråden skapades och har fått 93 svar. Det senaste inlägget skrevs .
Ursprungligen av kladda:

1000-tack! Precis vad jag sökte. Försökte att se vad som skiljer din kod mot dom tidigare, men inser inte vad dom olika tecknen etc. gör

Om jag ska gå igenom stegvis:
1. Hämta ner sidan med curl
2. Skicka den genom grep för att få fram relevanta delar (alla rader som har <span class="chr" i sig, typ 2 st)
3. Skicka utfallet från grep genom tr för att ta bort alla nya rader (skapar en rad av allt som grep skriver ut)
4. Använd sed för att maska ut de delar som vi är intresserade om (matchningen sker inom \(.*\) och blir träff 1 tom 4), egentligen kan man korta ner det lite till (nu matchar den fram id:t också, träff 1 och 3). De matchade delarna skrivs ut med "OMX: " före (träff 2 och 4).

En fördel med att använda grep istället för en massa sed är att om inte grep hittar något skriver den inte heller ut någonting. Alltså får du ett tomt resultat istället för en massa kod...

  • Medlem
  • Göteborg
  • 2011-12-28 04:15

Ah, då förstår jag lite mer Tack!

Skulle du kanske kunna hjälpa mig förstå varför denna kod skrivs ut på "felhåll" när det tillkommer en decimal? (2.9°C blir 9.2°C t.ex)

Citat:

curl http://m.wund.com/global/stations/02526.html |sed -n '21p' | sed -e 's/<span class="nowrap"><b>//g' | sed -e 's/<\/b.*//g' | sed 's/^/ C°/' | sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' | sed -e 's/ //g'

??

Tack på förhand!

Ursprungligen av kladda:

Ah, då förstår jag lite mer Tack!

Skulle du kanske kunna hjälpa mig förstå varför denna kod skrivs ut på "felhåll" när det tillkommer en decimal? (2.9°C blir 9.2°C t.ex)

??

Tack på förhand!

Det är för att de lägger till C° i början (sed 's/^/C°/') och för att få gradtalet rätt vänder de håll på hela linjen. Inget problem med Fahrenheit säkerligen, antar att de inte använder decimalangivna gradtal där...
F.ö. är delen som reverserar linjen tagen från:

Ursprungligen av http://sed.sourceforge.net/sed1line.txt:

# reverse each character on the line (emulates "rev")
sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'

Jag skrev om kommandot, bör funka bättre:

Citat:

curl Weather Underground (Mobile) |sed -n '21p' | sed -e 's/<span class="nowrap"><b>//g;s/<\/b.*//g;s/ //g;s/.*/& °C/'

Den funkar så här:
1. Hämta hem med curl
2. Mata genom sed som bara skriver ut rad 21 i filen
3. Mata återigen genom sed som tar bort taggarna på linjen (<span....>, <b> samt från första </b> till slutet av linjen), tar bort alla mellanslag, och lägger till i slutet på linjen °C

  • Medlem
  • Göteborg
  • 2011-12-28 12:45
Ursprungligen av suddgummi:

Det är för att de lägger till C° i början (sed 's/^/C°/') och för att få gradtalet rätt vänder de håll på hela linjen. Inget problem med Fahrenheit säkerligen, antar att de inte använder decimalangivna gradtal där...
F.ö. är delen som reverserar linjen tagen från:

Jag skrev om kommandot, bör funka bättre:

Den funkar så här:
1. Hämta hem med curl
2. Mata genom sed som bara skriver ut rad 21 i filen
3. Mata återigen genom sed som tar bort taggarna på linjen (<span....>, <b> samt från första </b> till slutet av linjen), tar bort alla mellanslag, och lägger till i slutet på linjen °C

Fantastiskt! Tack!
God Fortsättning!

Bevaka tråden