Advertisement
goebelmasse

Berechnung des Osterdatums (Shellskript und awk)

Feb 5th, 2015
493
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.03 KB | None | 0 0
  1. #!/bin/sh
  2. # $Id: ostern,v 1.2 2015/02/05 20:34:28 elias Exp $
  3. ########################################################################
  4. #
  5. # Berechnung des Osterdatums für ein Jahr
  6. # Quelle der Formel:
  7. # https://de.wikipedia.org/wiki/Gau%C3%9Fsche_Osterformel
  8. #
  9. ########################################################################
  10.  
  11. PATH=/bin:/usr/bin
  12.  
  13. case $# in
  14.     0)
  15.     year=`date +%Y`
  16.     ;;
  17.     1)
  18.     year=$1
  19.     ;;
  20.     *)
  21.     echo 1>&2 "Zu viele Parameter."
  22.     exit 1
  23.     ;;
  24. esac
  25.  
  26. if [ $year = "-h" ]
  27. then
  28.     echo 1>&2 "Benutzung: ostern [jahr]"
  29.     echo 1>&2 "Ohne Jahresangabe wird das aktuelle Jahr genommen"
  30.     exit
  31. fi
  32.  
  33. echo $year | awk '
  34. {
  35.  year = $1
  36.  a = year % 19
  37.  b = year % 4
  38.  c = year % 7
  39.  k = int(year / 100)
  40.  p = int((8 * k + 13) / 25)
  41.  q = int(k / 4)
  42.  m = (15 + k - p - q) % 30
  43.  d = (19 * a + m) % 30
  44.  n = (4 + k - q) % 7
  45.  e = (2 * b + 4 * c + 6 * d + n) % 7
  46.  oday = (22 + d + e)
  47.  omnt = 3
  48.  if (oday > 31) { oday -= 31; omnt += 1 }
  49.  printf("%04d-%02d-%02d\n", year, omnt, oday)
  50. }'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement