2025년 7월 23일 수요일

VIM vs AWK

vim을 이용한 월단위 시간 정보 요약.


프로세스 발생 정보 요약.


메시지 발생 정보 요약.


데이터 이해도를 높이기 위한 탐색적 데이터 분석 과정을 진행할 때 가끔 나오는 질문이 있다.

VIM 말고 AWK 같은 거 쓰면 안 되나요?

why not? 월단위 시간 정보.

[root@Splunk ~]# awk '{print $1}' ./secure.log | uniq
May
Oct
Dec
Jun
Apr
Jun
Jul
cs

Jun이 둘인 이유는 uniq 명령이 연속되지 않는 데이터를 다른 데이터로 인식하기 때문. 정렬을 먼저 한 후, 중복을 제거해주면 된다.

[root@Splunk ~]# awk '{print $1}' ./secure.log | sort | uniq
Apr
Dec
Jul
Jun
May
Oct
cs

프로세스 발생 정보.

[root@Splunk ~]# awk '{print $5}' ./secure.log |
> awk -'[\\[:]' '{print $1}' | sort | uniq
groupadd
login
polkitd
sshd
useradd
cs

메시지 발생 정보.

[root@Splunk ~]# awk '{
> if ($6 ~ /pam_/) print $7, $8
> else print $6, $7}' ./secure.log | sort | uniq
Accepted password
Acquired the
Exiting on
Finished loading,
group added
Loading rules
new group:
new user:
Received signal
Registered Authentication
ROOT LOGIN
Server listening
session opened
Unregistered Authentication
cs

내친 김에 프로세스 전체 발생 내역.

[root@Splunk ~]# awk '{print $5}' ./secure.log | 
> awk -'[\\[:]' '{print $1}' | 
> awk '{arr[$1]++;} END {for (i in arr) print i, arr[i]}'
sshd 135
login 16
polkitd 213
useradd 2
groupadd 6
cs

메시지 전체 발생 내역.

[root@Splunk ~]# awk '{
> if ($6 ~ /pam_/) print $7, $8
> else print $6, $7}' ./secure.log | 
awk '{arr[$1, " ", $2]++;} END {for (i in arr) print i, arr[i]}'
Registered Authentication 58
session opened 39
Unregistered Authentication 35
Exiting on 4
Finished loading, 30
new group: 2
Acquired the 30
group added 4
Received signal 7
ROOT LOGIN 8
new user: 2
Loading rules 60
Server listening 62
Accepted password 31
cs

막강한 데이터 분석 기능을 보여주는 awk. 이때 vim과의 차이점은 데이터를 직접 보면서 작업하기 힘들다는 것. 데이터를 모르는 상태에서 이런 작업이 가능할까? vim을 이용한 데이터 학습 과정에서 데이터 이해도가 높아졌기 때문에 데이터를 보지 않고도 awk 활용이 가능했다는 얘기. 

텍스트 편집기인 vim은 데이터를 직접 보면서 작업함으로써 실수를 빠르게 개선할 수 있는 환경을 제공하며, 정규표현식 지원도 awk보다 더 풍부하다. 이런 vim을 통해 데이터와 정규표현식에 대한 이해도를 높이고, 데이터 핸들링에 대한 감을 익히면 awk든 뭐든 쉬워진다. 

awk의 복잡한 코드가 더 있어보이는 건 사실이지만, 그런 관점으로 복잡한 알고리즘이나 화려한 툴에만 매달린다면 데이터는 점점 더 낯설어질 수밖에 없다. vim이 더 좋다고 떠드는 이유는 별거 없다. 데이터랑 친해지는 데 이만한 게 없거든.
VIM과 정규표현식으로 문자열 데이터의 해체와 조립을 반복하는 과정에서 어느 사이에 데이터의 구조와 의미를 파악해버렸다... 그 과정의 경험은 해당 로그에서 무엇을, 어떻게 분석할지에 대한 의사 결정의 근거가 되어주고, 반정형 데이터를 정형 데이터인 테이블로 바꾸는 작업의 토대가 되어주며, 결과적으로 로그 분석이 아닌 데이터 분석을 가능하게 해준다 - 데이터 분석이 쉬워지는 정규표현식

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스