• Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick
  • November - das bedeutet oftmals Herbstblues, grauer Himmel, Tristesse und Wetter, bei dem man gern im Warmen bleibt. Aber nur oftmals! Wir fordern Euch gern auf, gegen den Herbstblues anzukämpfen und hoffen, dabei hilft Euch unser aktuelles Monatsthema. Neugierig geworden? --> Zum Mitmachen bitte hier klicken

[10.9 Mavericks] Hilfe bei Anpassung Geeklet-Script für Jahreskalender

MaChris

Osnabrücker Reinette
Registriert
25.07.06
Beiträge
994
Hallo zusammen,

ich habe aktuell ein Geektool-Geeklet, welches mir einen Jahreskalender auf dem Schreibtisch angezeigt.

Der Script-Code dafür lautet:

Code:
 cal -y | awk -v month="`date +%m`" -v day="`date +%e` " '{m=int((NR-3)/8)*3+1; for (i=0;i<3;i++) {t[i]=substr($0,1+i*22,20) " "; if (m+i==month) sub(day,"\033[1;32m&\033[0m",t[i]);} print t[0],t[1],t[2];}'

Ergebnis siehe Bildbeispiel.

Da ich mit Unix-Shellscripts keinerlei Erfahrung habe, benötige ich einen Tipp, wie ich das Script anpassen muss, damit die Woche mit dem Montag und nicht mit dem Sonntag beginnt.

Vielen Dank.
 

Anhänge

  • Kalender.png
    Kalender.png
    283,2 KB · Aufrufe: 144
Verzeihung, wenn ich den Thread noch mal hoch schieb.
Niemand eine Idee?


Sent from my iPad using Apfeltalk mobile app
 
Das liegt nicht am Skript, sondern an der Ausgabe von cal -y, da kannst du nichts ändern.
 
Danke für die Antwort.
Ich erlag nur der offensichtlich irrigen Annahme, dass man die Ausgabe von cal -y noch mit einem weiteren Befehl oder einem Parameter diesbezüglich hätte anpassen können.


Sent from my iPad using Apfeltalk mobile app
 
Kann man, ist aber nicht ganz einfach. Hier mal ein Versuch:
Code:
cal -y | awk '{ if (substr($0,1,2) == " 1");
    do { prevline=$0;
        if (getline == 0) exit; 
        print " " substr(prevline,4,17) " " substr($0,1,3) substr(prevline,25,18) " " substr($0,23,3) substr(prevline,47,18) " " substr($0,45,3) " "; 
    } while (1);
}' | sed 's/So/   /g;s/Sa   /Sa So/g;' | awk -v month="$(date +%m)" -v day="$(date +%e)" '{m=int((NR-3)/8)*3+1;
    for (i=0;i<3;i++) {t[i]=substr($0,2+i*22,21) " ";
        if (m+i==month) sub(day,"\033[1;32m&\033[0m",t[i]);
    };
    print t[0],t[1],t[2];
}';
 
  • Like
Reaktionen: MaChris
Hey, Danke schön, werde ich später gleich mal auf meinem Mac ausprobieren.


Sent from my iPad using Apfeltalk mobile app
 
Cool (s. Bildanhang unten).

Vielen Dank dafür!!

Ähm, nur noch eine Frage - könnte man die Jahreszahl noch mittig / zentriert positionieren?
 

Anhänge

  • Jahreskalender.png
    Jahreskalender.png
    306,3 KB · Aufrufe: 136
Quick'n'dirty:
Code:
date '+                                %Y';
cal -y | awk '{ getline; if (substr($0,1,2) == " 1");
    do { prevline=$0;
        if (getline == 0) exit;
        print " " substr(prevline,4,17) " " substr($0,1,3) substr(prevline,25,18) " " substr($0,23,3) substr(prevline,47,18) " " substr($0,45,3) " ";
    } while (1);
}' | sed 's/So/   /g;s/Sa   /Sa So/g;' | awk -v month="$(date +%m)" -v day="$(date +%e)" '{m=int((NR-3)/8)*3+1;
    for (i=0;i<3;i++) {t[i]=substr($0,1+i*22,21) " ";
        if (m+i==month) sub(day,"\033[1;32m&\033[0m",t[i]);
    };
    print t[0],t[1],t[2];
}';
Hoffe das passt so einigermaßen, ansonsten kannst du ja in der ersten Zeile selbst ein paar Leerzeichen einfügen/entfernen.
 
  • Like
Reaktionen: MaChris