#!/bin/bash set -e . ~/.cadaver_cals tempdir=$(mktemp -d) tempdir=$(readlink -f "$tempdir") trap "/bin/rm -f \"$tempdir\"/*.ics; rmdir \"$tempdir\"" QUIT INT EXIT for file in "$@"; do bevents=($(grep -hn BEGIN:VEVENT "$file" | awk -F: '{print $1}')) eevents=($(grep -hn END:VEVENT "$file" | awk -F: '{print $1}')) ehead=${bevents[0]} let "ehead -= 1" bfoot=$(wc -l "$file") let "bfoot -= ${eevents[-1]}" for (( i=0; i < ${#bevents[@]}; i++)); do head -n $ehead "$file" > "$file-$i.ics"; sed -n ${bevents[$i]},${eevents[$i]}p "$file" >> "$file-$i.ics"; tail -n $bfoot "$file" >> "$file-$i.ics"; done done (cd "$tempdir"; cadaver $CADAVER_CAL << EOC mput *.ics exit EOC rm *.ics; ) rmdir $tempdir; trap - QUIT INT EXIT