와스의 세션카운트를 저장하는 텍스트파일이다. 날짜별로 13줄의 레코드가 추가된다. 데이터적인 측면에서 이 13개가 하나의 의미있는 레코드가 될것이다. 이 경우 날짜와 해당일 카운트 정보만 뽑아내기 위해 awksed를 이용해보았다.

  • 소스 데이터 파일
8238
8238
1377513
4910414
1065243562175
1154444273173
--------------------
today
thisMonth
thisYear
total
fileCreated(Sat Oct 04 13:59:22 KST 2003)
lastUpdated(Tue Aug 01 23:57:53 KST 2006)
8026
16264
1385539
4918440
1065243562175
1154530587368
--------------------
today
thisMonth
thisYear
total
fileCreated(Sat Oct 04 13:59:22 KST 2003)
lastUpdated(Wed Aug 02 23:56:27 KST 2006)
....이상이 이틀치 데이터 이런식으로 하루에 13줄씩 반복됨

  • 스크립트
$ cat parsedata.sh
#!/usr/bin/sh

sed -e '1,1s/^/\
/' -e '/^lastUpdated/s/$/|/' | awk -v FS="\n" -v RS="|" '{if(NF==14){print $14,$2}}' | awk -F" " -vOFS="\t" '{print $3,$7}'
스크립트에 대한 간단한 설명을 하자면

먼저 sed를 이용하여 원본파일의 첫줄에 빈줄을 하나 넣어준다. 그리고 lastUpdated라고 시작하는 줄의 끝에 파이프문자(|)를 넣어준다. (레코드 구분자로 쓰기 위해....)

그 다음 awk에서 필드구분자를 줄바꿈문자(\n)로 지정하고 레코드구분자를 앞에서 붙여준 파이프문자(|)로 지정한후 필드가 14개인 레코드인 경우에만 14번째와 2번째 필드를 출력한다.

위에서 나온 결과에서 14번째 필드(즉 날짜가 들어가는 필드)에서 순수한 날짜 2자리만 뽑기 위해 다시 awk를 이용한다. 방법은 필드구분자를 공백( )으로 지정한후 3번째 필드와 7번째 필드를 출력한다.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2013-08-05 12:49:33
Processing time 0.0082 sec