상세 컨텐츠

본문 제목

awk, gsub을 이용해서 vmstat의 값을 csv 형태로 저장

Linux

by 힐둔 2021. 8. 9. 18:08

본문

vmstat의 값을 주기 적으로 CSV형태로 저장을 해야 할일이 있었습니다. vmstat은 linux 가상 메모리 정보를 표시하는 명령이고, CSV는 구분자가 ','인 파일 입니다. excel이나 machine learning등 데이터를 가공할 일이 있는 경우에 CSV형태로 저장을 하게 되면 여러가지로 편리 합니다.

 

vmstat은 아래와 같이 실제 값 이외에 header가 두줄이 추가 되어 있습니다. 위 두줄은 필요 없고 실제 데이터를 주기적으로 저장을 해야 합니다. 

 

일단 vmstat에서 숫자로 되어 있는 값을 아래의 명령으로 추출 합니다.

vmstat | grep '[0-9.]'

 

그리고 다시 awk로 받아서 gsub (치환)을 이용해 공백을 ','로 변경해 봅니다.

vmstat | grep '[0-9.]' | awk '{ gsub(" ", ","); print $0}'

 

문제가 있습니다. 1)공백이 여러개로 되어 있는 경우와 2)첫번째도 한자리 데이터면 공백으로 시작한다는 것입니다. 그래서 첫번째 문제는 gsub에서 "공백" 대신에 "공백공백*"라고 하면 공백의 개수와 상관 없이 ','로 치환해줍니다.

vmstat | grep '[0-9]' | awk '{gsub("  *",","); print $0}'

 

아래와 같이 저장했을 때 원하던대로 저장됨을 확인할 수 있습니다. 2)번에 대한 것은 추후 고민을 .....

vmstat | grep '[0-9.]' | awk '{ gsub("  *", ","); print $0}' > vmstat_csv.tx

 

 

관련글 더보기

댓글 영역