Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. basename=$(basename $0)
  4.  
  5. if [ "$1" ]
  6. then
  7. year=$2
  8. next_year=$(($year+1))
  9. result_file=${1/.ics/}_update_year.ics
  10. mid_file="mid.ics"
  11. calendar_end=$(tail -n 1 $1)
  12.  
  13. # カレンダ定義のためのoffsetを最初に確保
  14. calendar_offset=$(($(grep BEGIN:VEVENT -n $1 | sed -e 's/:.*//g' | head -n 1)-1)) #最初のBEGIN:VEVENTを含まないようにするため
  15. sed -n "1, ${calendar_offset}p" $1 > $result_file
  16. sed "1, ${calendar_offset}d" $1 > $mid_file
  17.  
  18. # dtstart:yyyyを含むイベントを抽出
  19. i=$(grep DTSTART:$year $mid_file | head -n 1)
  20. while [ "$i" ]
  21. do
  22. event_start=$(($(grep DTSTART:${year} -n $mid_file | sed -e 's/:.*//g' | head -n 1)-1)) # 最初のDTSTARTと,BEGIN:VEVENTを追加するため
  23. event_end=$(($(tail -n +$event_start $mid_file | grep END:VEVENT -n | sed -e 's/:.*//g' | head -n 1)+$event_start-1)) # 次のBEGIN:VEVENTを含まないようにするため,-1
  24. sed -n "${event_start}, ${event_end}p" $mid_file >> $result_file
  25. tmp=$(sed "1, ${event_end}d" $mid_file)
  26. echo "$tmp" > "$mid_file"
  27. i=$(grep DTSTART:$year $mid_file | head -n 1)
  28. done
  29.  
  30. # yearをnext_yearに置換
  31. result=$(sed "s/$year/$next_year/g" $result_file)
  32. echo "$result" > "$result_file"
  33.  
  34. # 終了処理
  35. echo "$calendar_end" >> $result_file
  36. rm $mid_file
  37.  
  38. else
  39. echo "Usage: bash $basename <filename> yyyy"
  40. echo "<filename> shoule be filename for ics file."
  41. echo "If you exec this script, '<filename>_update_year.ics' is generated."
  42. echo "This file include script result."
  43. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement