• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

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

MaChris

Osnabrücker Reinette
Registriert
25.07.06
Beiträge
990
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