0

私は半分のCクラスと、経験として引き出すために書いた1つか2つのシェルスクリプトを持っています。ターミナルからGoogleカレンダーにアップロードするために、スケジュールからデータを解析しようとしています。私は次のようなテキストのブロックでスケジュールを受け取ります:

2012年9月1日土曜日00:00:00GMT-0700(PDT)土曜日2:00 PM 11:00 PM

2012年9月2日日曜日00:00:00GMT-0700(PDT)日曜日00:00 AM 00:00 AM

2012年9月3日月曜日00:00:00GMT-0700(PDT)月曜日9:00 AM 6:00 PM

2012年9月4日火曜日00:00:00GMT-0700(PDT)火曜日9:00 AM 6:00 PM

2012年9月5日水曜日00:00:00GMT-0700(PDT)水曜日00:00 AM 00:00 AM

2012年9月6日木曜日00:00:00GMT-0700(PDT)木曜日8:00 AM 4:00 PM

2012年9月7日金曜日00:00:00GMT-0700(PDT)金曜日10:00 AM 7:00 PM

そして、googleclを使用して、これを端末に入力できることがわかりました。

$googleカレンダーは「9月3日仕事9から6」を追加します

そして、カレンダーイベントを取得して、自動的に電話に同期させることができます。

sedとawkのドキュメントをいくつか読んだので、これらを使用して、各行の5番目から10番目(つまり9月1日)の文字とシフトの開始時刻と終了時刻を取得し、「作業」タイトルを追加できます。 、これを直接googleclにパイプします。私はまだそれを理解していません。

また、上記のようにスケジュールをテキストファイルにエクスポートし、Cを使用して平易な英語でスケジュールをGoogleカレンダーにパイプできるため、CでファイルI/Oを調べてみました。

sedとawkはこれを行うための好ましい方法ですか?(私が理解できれば、一般的な* nixコマンドだけでそれを行うことが私の最初の選択肢だと思います)代わりに、これを行うためにCで小さなプログラムを書く必要がありますか?グーグルで見つけたページの多くは非常に長く、頭上に少しあるので、助けがあれば(どちらかでお気に入りのチュートリアルにリンクしているだけでも、もう少し読むことができます)、いただければ幸いです。ありがとう。

4

1 に答える 1

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ループに入れることは簡単ではありません(私にとっては!)。簡単な方法の1つは、結果を「file」に保存してから「shfile」に保存することです。

于 2012-09-03T05:58:55.970 に答える