I’ve got half a C class and maybe one or two shell scripts I’ve written to draw from as experience. I’m trying to parse data from a schedule in order to upload it to Google Calendar from a terminal. I receive the schedule in a block of text like this:
Sat Sep 01 2012 00:00:00 GMT-0700 (PDT) Saturday 2:00PM 11:00PM
Sun Sep 02 2012 00:00:00 GMT-0700 (PDT) Sunday 00:00AM 00:00AM
Mon Sep 03 2012 00:00:00 GMT-0700 (PDT) Monday 9:00AM 6:00PM
Tue Sep 04 2012 00:00:00 GMT-0700 (PDT) Tuesday 9:00AM 6:00PM
Wed Sep 05 2012 00:00:00 GMT-0700 (PDT) Wednesday 00:00AM 00:00AM
Thu Sep 06 2012 00:00:00 GMT-0700 (PDT) Thursday 8:00AM 4:00PM
Fri Sep 07 2012 00:00:00 GMT-0700 (PDT) Friday 10:00AM 7:00PM
And I’ve figured out that with googlecl I can type this into my terminal:
$ google calendar add "Sep 3 Work 9 to 6"
And I’ll get a calendar event I can then have automagically synced to my phone.
I’ve read through some of the documentation on sed and awk figuring I could just use these to grab say the 5th through 10th (ie Sep 01) characters of each line and the time the shifts start and end, add the "Work" title, and pipe this directly to googlecl. I haven’t gotten it down yet though.
I’ve also tried researching file i/o in C, as I could export my schedule as seen above to a text file and then maybe use C to pipe the schedule in plain-er English to Google Calendar.
Is sed and awk the preferred way of doing this? (I guess doing it with just common *nix commands is my first choice if I can figure it out) Should I instead write a little program in C to do this? Any help (even if it’s just linking me to your favorite tutorials on either so I can do some more reading) would be appreciated, as many of the pages I’ve found Googling were both very long and a little over my head. Thanks.
Result:
Explanation:
If they are the same it looks like you don’t need to enter them in your calendar. Also, implicitly checks for non-empty lines.
Print the string with relevant fields, escaping the quotes.
edit: As for executing it automatically, there is quite some delicate quoting issues going on, so putting this line in a for-loop is not trivial (for me!). One easy way out is to store the results in “file”, and then “sh file”.