2012-09-03 24 views
0

我有一半的C類,也許有一兩個shell腳本是我寫作從經驗中繪製的。我正在嘗試解析計劃中的數據,以便從終端將其上傳到Google日曆。我收到的日程中的文本這樣的塊:解析日程表以上傳到Google日曆

星期六2012年9月1日00:00:00 GMT-0700(PDT)星期六2:00 PM 11:00 PM

太陽2012年9月2日00: 00:00 GMT-0700(PDT)週日00:00 AM 00:00 AM

星期一2012年9月3日00:00:00 GMT-0700(PDT)週一上午9:00下午6:00

星期二2012年9月4日00:00:00 GMT-0700(PDT)週二9:00 AM 6:00 PM

Wed Sep 05 2012 00:00:00 GMT-0 700(PDT)週三00:00 AM 00:00 AM

星期四2012年9月6日00:00:00 GMT-0700(PDT)週四8:00 AM 4:00 PM

週五2012年9月7日00:00:00 GMT-0700(PDT)週五10:00 AM至7:00 PM

我也想通了,與googlecl我可以輸入這個到我的終端:

$谷歌日曆添加「09月03日工作9至6「

然後我會得到一個日曆事件,然後我可以自動同步到我的手機。

我已經通讀了一些關於sed和awk的文檔,弄清楚我可以用這些來抓住每一行的第5到第10(即Sep 01)字符和轉換開始和結束的時間,添加「工作」標題,並將其直接傳遞給googlecl。儘管如此,我還沒有得到它。

我也試過在C中研究文件I/O,因爲我可以將我的日程表導出到一個文本文件中,然後可能使用C將日程表以普通英語傳遞給Google日曆。

是sed和awk這樣做的首選方式? (我想這只是普通的* nix命令是我的第一選擇,如果我能弄明白的話)我應該用C編寫一個小程序來做到這一點嗎?任何幫助(即使它只是連接到我最喜歡的教程,所以我可以做更多的閱讀),將不勝感激,因爲我發現谷歌搜索的許多網頁都很長,有點在我頭上。謝謝。

+0

所以我發現了關於剪切,這似乎可能真的有幫助。我現在有這條小線:cat schedule | grep 00:00 | cut -b5-10 –

+0

cat schedule | grep 00:00 | cut -b5-10 -b41-65 這會給我一個很好的輸出,像這樣:9月06日星期四下午1:30 PM 9:00 PM所以現在我只需要用「Work」一詞來替換一週中的一天的名字,並將每條線分別傳遞給googlcl。 –

回答

2
awk '{ if ($9 != $10) {print "google calendar add \"" $2, $3, "Work", $9, "to", $10"\""}}' cal 

結果:

google calendar add "Sep 01 Work 2:00PM to 11:00PM" 
google calendar add "Sep 03 Work 9:00AM to 6:00PM" 
google calendar add "Sep 04 Work 9:00AM to 6:00PM" 
google calendar add "Sep 06 Work 8:00AM to 4:00PM" 
google calendar add "Sep 07 Work 10:00AM to 7:00PM" 

說明:

if ($9 != $10) {...} 

如果他們看起來你並不需要在您的日曆進入他們一樣。此外,隱式檢查非空行。

print "google calendar add \"" $2, $3, "Work", $9, "to", $10"\"" 

用相關字段打印字符串,轉義引號。

編輯:至於自動執行它,有相當一些微妙的引用問題正在進行,所以把這條線放在for循環中並不是微不足道的(對我來說!)。一個簡單的方法是將結果存儲在「文件」中,然後存儲「sh文件」。

+0

這很好,謝謝!它甚至解決了我沒有問過的問題,這是我沒有工作的日子以及他們如何上市(上午00:00 - 上午00:00工作)的問題,所以我很欣賞這一點。我剛剛將輸出結果發送到一個文件中,並將它運行在我的shell中,然後我在Google Cal上安排了我的日程安排。時間表每週自動在週六上午12:01發佈,所以我沒有任何問題按照計劃運行這樣的三件事:一次是獲取,一次是解析並輸出googlecl命令(你做了什麼),一次是發佈。 –