2012-09-03 5 views
0

저는 C 클래스가 절반이고, 아마도 경험에서 끌어 내기 위해 쓴 하나 또는 두 개의 쉘 스크립트가 있습니다. 터미널에서 Google 캘린더에 일정을 업로드하기 위해 일정에서 데이터를 구문 분석하려고합니다. 나는이 같은 텍스트 블록에 일정을 나타납니다Google 캘린더에 업로드 할 일정을 파싱하기

토 2012년 9월 1일 0시 0 분 0 초 GMT-0700 (PDT) 토요일 오후 2시 오후 11시

일 구월 02 2012 00 : 그리니치 표준시 00시-0700 (PDT) 일요일 오전 12시 오전 12시

월 2012년 9월 3일 0시 0 분 0 초 GMT-0700 (PDT) 월요일 오전 9시 오후 6시

화 2012년 9월 4일 00:00:00 GMT-0700 (PDT) 화요일 9:00 AM 6:00

수요일 2012 년 9 월 5 일 00:00:00 GMT-0 700 (PDT) 수요일 오전 12시 오전 12시

목 2012년 9월 6일 0시 0 분 0 초 GMT-0700 (PDT) 목요일 오전 8시 오후 4시

금 2012년 9월 7일 0시 0 분 0 초 GMT-0700 (PDT) 금요일에는 오전 10시에서 오후 7시

내가 googlecl로 내 터미널에이를 입력 할 수 있음을 알아 냈어요 :

$ 구글 캘린더 추가 "9월 3일 일 9 ~ 6 "

그리고 캘린더 일정을 자동으로 동기화 할 수 있습니다.

나는 sed와 awk에 관한 문서를 통해 각 줄의 5 번째에서 10 번째 (즉 Sep 01) 문자와 교대 시작과 종료 시간을 말하면서 사용할 수 있다고 생각했다. "Work"title을 입력하고 googlecl로 바로 연결하십시오. 나는 아직 그것을 얻지 않았다.

위의 내용을 텍스트 파일로 내 보낸 다음 C를 사용하여 영어로 된 일정을 Google 캘린더로 보낼 수 있으므로 C로 파일 I/O를 조사해 보았습니다.

sed 및 awk가이 작업을 수행하는 가장 좋은 방법입니까? (나는 그것을 알아낼 수 있다면 그냥 일반적인 * nix 명령으로 수행하는 것이 첫 번째 선택이라고 생각합니다.) 대신 C에서 작은 프로그램을 작성해야합니까? 어떤 도움이 (비록 내가 더 많은 독서를 할 수 있도록 좋아하는 튜토리얼을 연결해 주었다고해도) 나는 도움이된다. 내가 찾은 페이지 중 많은 부분이 내 머리 위로 길고 조금 길다. 감사.

+0

그래서 나는 그것이 도움이 될 것 같은 것 같은 상처에 대해 알았습니다. 나는이 작은 줄을 가지고있다 : cat schedule | grep 00:00 | 컷 -b5-10 –

+0

고양이 일정 | grep 00:00 | 컷 -b5-10 -b41-65 이렇게하면 다음과 같은 멋진 결과를 얻을 수 있습니다. Sep 06 Thursday 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) {...} 

가 캘린더에 입력 할 필요가 없습니다 것 같습니다 동일합니다. 또한 비어 있지 않은 행을 암시 적으로 검사합니다.

문자열을 관련 필드와 함께 인쇄하고 따옴표를 이스케이프합니다.

편집 : 자동으로 실행하는 데에는 상당히 복잡한 인용 문제가 있기 때문에 for-loop에이 행을 추가하는 것은 쉬운 일이 아닙니다. 한 가지 쉬운 방법은 결과를 "파일"에 저장 한 다음 "파일"로 저장하는 것입니다.

+0

그 덕분에, 고마워! 그것은 내가 묻지 않은 문제를 해결해주었습니다. 나는 일하지 않은 날과 그들이 어떻게 나열되어 있는지 (00:00 AM - 00:00 AM에 일하는) 어떻게해야했는지 알았습니다. 방금 언급 한대로 파일에 출력을 보내고이를 쉘에서 실행했습니다. Google 캘린더에서 일정을 잡았습니다. 일정은 매주 토요일 오전 12:01에 자동 게시되므로 일정에 따라 세 가지를 실행해도 문제가 없습니다. 하나는 가져오고 하나는 구문 분석하고 googlecl 명령 (작성한 내용)과 하나는 게시하십시오. –

관련 문제