datamash - 리눅스에서 합, 평균, 표준편차 계산
By 반달가면 | 2022년 5월 24일 |
리눅스에서 텍스트 파일에 저장된 수자들로부터 합, 평균, 표준편차 등을 계산하고 싶을 때 datamash를 활용할 수 있다. 설치는 터미널창에서 아래와 같이 진행한다. 데비안/우분투 기준이다. # S/W 저장소 정보 갱신 sudo apt-get update # datamash 설치 sudo apt-get install datamash 예를 들어 과일의 개수를 저장한 fruits.txt 파일의 내용이 아래와 같다고 가정하자. apple 10 banana 24 grapes 17 첫번째 항목은 명칭이고 두번째 항목은 개수이다. 전체 과일의 개수는 아래와 같이 계산할 수 있다. # 두번째 항목의 합 cat fruits.txt | datamash sum 2 "sum 2"
[bash: awk] awk에서 영역 구분을 이용한 문자열 재구성 작업 (gensub)
By 반달가면 | 2017년 1월 17일 |
예전에 sed에서 역슬래시-괄호를 이용한 영역 구분 및 문자열 재구성 작업 방법을 정리해 두었는데, 같은 종류의 작업을 awk에서도 할 수 있다. 문자열의 영역을 설정해서 자리를 바꾸거나 내용을 대체하거나 하는 등의 작업이다. 우선 awk에서 제공하는 gensub 함수를 보자. 통상적인 문자열 대체는 sub, gsub 함수를 사용할 수 있지만 영역을 설정하는 것은 gensub 함수를 이용해야 한다. (sub, gsub 함수에 대한 내용은 이전 게시물을 참고하자. 여기로) gensub 함수의 형식은 아래와 같다. gensub(/문자열 또는 정규표현식/, "대체할 문자열", 실행옵션, 대상) "대상" 문자열에서 "/문자열 또는 정규표현식/"을 찾아서 "대체할 문자열"로 바꾼다. 실행 옵션은
[라즈베리파이] 스케줄링: 런큐란 무엇일까?
By Guillermo Austin Kim | 2019년 2월 3일 |
CPU를 점유하면서 실행하고 있는 프로세스는 딱 한 개인데 다수의 프로세스들은 실행 대기 상태에 있습니다. 커널은 스케줄링으로 여러 개의 실행 대기 프로세스 중에서 하나 프로세스를 선택합니다. 리눅스 시스템에서는 여러 개 프로세스들이 동시 다발적으로 실행 요청을 합니다. 따라서 여러 개의 실행 대기 상태에 있는 프로세스를 식별하고 관리할 수 있는 자료 구조가 필요합니다. 실행 대기 상태 프로세스와 CPU에서 실행 중인 프로세스를 관리하는 자료구조를 런큐라고 말합니다. 런큐가 여러 개 프로세스들로부터 실행 요청을 받아 관리를 해주니 스케줄러가 편하게 스케줄링을 할 수 있는 것입니다. 런큐는 per-cpu 타입 변수입니다. 즉, CPU 갯수만큼 주소 공간이 있다는 의미입니다.라즈베리파이는 CPU가 4개
[라즈베리파이] 워크큐(Workqueue) - 워크를 워크큐에 어떻게 큐잉할까?(2)
By Guillermo Austin Kim | 2018년 9월 9일 |
![[라즈베리파이] 워크큐(Workqueue) - 워크를 워크큐에 어떻게 큐잉할까?(2)](https://img.zoomtrend.com/2018/09/09/c0246238_5b933ef12662e.png)
From: 워크를 워크큐에 어떻게 큐잉할까?(1)에서 계속... 이번에는 28줄 코드를 보겠습니다.28last_pool = get_work_pool(work);struct work_struct 구조체인 work 변수로 get_work_pool() 함수를 호출해서 struct worker_pool 구조체 주소를 last_pool 지역변수로 읽습니다. get_work_pool() 함수는 조금 후 분석할 예정입니다. 이 코드만 보면 이해하기 쉽지 않으니 다음 그림을 같이 보겠습니다. 워크를 실행한 적이 있으면 struct work_struct.data 란 멤버 변수에 풀워크 주소를 저장합니다. get_work_pool() 함수는 위 그림에서 [1],[2] 번호와 같이 동작하면서 워커풀 주소를 가져옵니다.